C#反序列化数组总是为元素返回null



反序列化部分工作时遇到问题。当我有一个带有属性的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; }
}

相关内容

  • 没有找到相关文章

最新更新