开发者

XmlSerializer and different field in class and xml attribute

开发者 https://www.devze.com 2023-04-09 09:56 出处:网络
I have xml with several items, for example: <TestObject> <TestElement1/> <TestElement2/>

I have xml with several items, for example:

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

Also I have class:

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

If I do:

XmlSerializer s = new XmlSerializer(typeof(List<Te开发者_运维百科stClass>));
List<TestClass> list = (List<TestClass>)s.Deserialize("myXml.xml");

After it I get list with objects TestClass, but property Element didn't set. How I must change serialization, if I want to set TestElement2 in Element field?


You need to decorate the Element property with an [XmlElement] attribute:

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

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


Try XmlElement attribute

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

see Controlling XML Serialization Using Attributes

0

精彩评论

暂无评论...
验证码 换一张
取 消