反序列化部分工作时遇到问题。当我有一个带有属性的xml节点时,所有属性值都会正确加载到我的类中,但当我使用元素时,它只返回null。
我在一个xml文件中存储了以下内容:
<?xml version="1.0" encoding="ISO8859-1"?>
...
<numbers>
<number id="55">name1</number>
<number id="4">name2</number>
</numbers>
...
类别定义如下:
public class root
{
[XmlArray("numbers")]
[XmlArrayItem(ElementName = "number")]
public List<NumberObj> numbers { get; set; }
}
[Serializable]
public class NumberObj
{
[XmlElement]
public string name { get; set; }
[XmlAttribute("id")]
public string id { get; set; }
}
一直为空的是名称。。我已经尝试了多种方法,比如将列表更改为array,但无论我所做的名称是空的。
我看到上面的类是错误的,因为当我将它序列化回XML时,我得到了以下内容:
<numbers>
<number id="123">
<number>abc</number>
</number>
<number id="45">
<number>abc</number>
</number>
</numbers>
有人能给我指对方向吗?
感谢
我认为正确的类定义必须是类似于的东西
[XmlRoot(ElementName="number")]
public class Number {
[XmlAttribute(AttributeName="id")]
public string Id { get; set; }
[XmlText]
public string Text { get; set; }
}
[XmlRoot(ElementName="numbers")]
public class Numbers {
[XmlElement(ElementName="number")]
public List<Number> Number { get; set; }
}