XmlSerializer и другое поле в классе и атрибут xml - PullRequest
1 голос
/ 29 сентября 2011

У меня есть XML с несколькими элементами, например:

<TestObject>
  <TestElement1/>
  <TestElement2/>
</TestObject>
<TestObject>
  <TestElement1/>
  <TestElement2/>
</TestObject>

Также у меня есть класс:

class TestClass {
  public int TestElement1 { get; set; }
  public int Element { get; set; }
}

Если я делаю:

XmlSerializer s = new XmlSerializer(typeof(List<TestClass>));
List<TestClass> list = (List<TestClass>)s.Deserialize("myXml.xml");

Послеэто я получаю список с объектами TestClass, но свойство Element не установлено.Как я должен изменить сериализацию, если я хочу установить TestElement2 в поле Элемент?

Ответы [ 2 ]

4 голосов
/ 29 сентября 2011

Вам необходимо украсить свойство Element атрибутом [XmlElement]:

[XmlRoot("TestObject")]
class TestClass {
    public int TestElement1 { get; set; }

    [XmlElement("TestElement2")]
    public int Element { get; set; }
}
1 голос
/ 29 сентября 2011

Попробуйте атрибут XmlElement

public class TaxRates{
    [XmlElement(ElementName = "TaxRate")]
    public decimal ReturnTaxRate;
}

см. Управление сериализацией XML с использованием атрибутов

...