C# 反序列化数组总是 returns 元素为 null
C# deserializing array always returns null for the element
反序列化部分工作时遇到问题。当我有一个带有属性的 xml 节点时,所有属性值都会正确加载到我的 class 中,但是当我使用元素时,它只是 returns null.
我将以下内容存储在 xml 文件中:
<?xml version="1.0" encoding="ISO8859-1"?>
...
<numbers>
<number id="55">name1</number>
<number id="4">name2</number>
</numbers>
...
Class定义如下:
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; }
}
一直为 null 的是名称。我尝试了多种方法,例如将列表更改为 arrary,但无论我做什么,名称都是 null。
我看到上面的 class 是错误的,因为当我将它序列化回 XML 时,我得到以下信息:
<numbers>
<number id="123">
<number>abc</number>
</number>
<number id="45">
<number>abc</number>
</number>
</numbers>
谁能指出我正确的方向?
谢谢
我认为正确的 class 定义必须是这样的
[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; }
}
反序列化部分工作时遇到问题。当我有一个带有属性的 xml 节点时,所有属性值都会正确加载到我的 class 中,但是当我使用元素时,它只是 returns null.
我将以下内容存储在 xml 文件中:
<?xml version="1.0" encoding="ISO8859-1"?>
...
<numbers>
<number id="55">name1</number>
<number id="4">name2</number>
</numbers>
...
Class定义如下:
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; }
}
一直为 null 的是名称。我尝试了多种方法,例如将列表更改为 arrary,但无论我做什么,名称都是 null。
我看到上面的 class 是错误的,因为当我将它序列化回 XML 时,我得到以下信息:
<numbers>
<number id="123">
<number>abc</number>
</number>
<number id="45">
<number>abc</number>
</number>
</numbers>
谁能指出我正确的方向?
谢谢
我认为正确的 class 定义必须是这样的
[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; }
}