XmlSerializer和类和xml属性中的不同字段

时间:2011-09-29 07:11:18

标签: c# .net xml xmlserializer

我有几个项目的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。如果我想在Element字段中设置TestElement2,我必须如何更改序列化?

2 个答案:

答案 0 :(得分:4)

您需要使用Element属性装饰[XmlElement]属性:

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

    [XmlElement("TestElement2")]
    public int Element { get; set; }
}

答案 1 :(得分:1)

尝试XmlElement属性

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

请参阅Controlling XML Serialization Using Attributes