Макет класса для сериализации в этот формат - PullRequest
1 голос
/ 21 сентября 2009

Мой XML выглядит так:

<cars year="2009">
   <engineType name="blah">
      <part type="metal"></part>
   </engineType>
   <makes>
      <make name="honda" id="1">
         <models>
            <model name="accord" id="2"/>
         </models>
      </make>
   </makes>
</cars>

Как создать класс, который при десериализации будет создавать приведенный выше макет xml.

Ответы [ 2 ]

10 голосов
/ 21 сентября 2009

Гибкость сериализации XML зависит от атрибутов и IXmlSerializable . XmlRoot , XmlElement , XmlAttribute - вот некоторые из них, которые позволяют очень легко указать сериализатору в некоторых общих, но полезных направлениях. Без дополнительной информации это может выглядеть примерно так:

[XmlRoot("cars")]
public class Cars
{
    [XmlAttribute("year")]
    public int Year {get;set;}

    [XmlElement("engineType")]
    public EngineType EngineType {get;set;}

    [XmlElement("makes")]
    public List<Make> Makes {get;set;}
}

public class EngineType
{
    [XmlAttribute("name")]
    public string Name {get;set;}

    [XmlElement("part")]
    public Part Part {get;set;}
}

public class Make
{
    [XmlAttribute("name")]
    public string Name {get;set;}

    [XmlAttribute("id")]
    public int ID {get;set;}

    [XmlElement("models")]
    public List<Model> Models {get;set;}
}

public class Model
{
    [XmlAttribute("name")]
    public string Name {get;set;}

    [XmlAttribute("id")]
    public int ID {get;set;}
}
3 голосов
/ 21 сентября 2009

Вы можете использовать Инструмент определения схемы XML для автоматической генерации класса из XML

...