我需要一些帮助,如果我将两个xml标签之间的字符串反序列化,我总是为null。
以下示例xml文件:
<?xml version="1.0" encoding="utf-8" ?>
<item name='First Item' size='1'>
<Bits value='0'>
1st String
</Bits>
<Bits value='1'>
2nd String
</Bits>
</item>
我写了以下课程:
[Serializable()]
public class Bits
{
[XmlElement(ElementName = "Bits")]
public String entryString { get; set; }
[XmlAttribute("value")]
public int entryValue { get; set; }
}
[Serializable()]
[XmlRoot("item")]
public class itemsReader
{
public itemsReader()
{
_bitList = new List<Bits>();
}
[XmlElement("Bits")]
public List<Bits> _bitList { get; set; }
[XmlAttribute("name")]
public String entryName { get; set; }
[XmlAttribute("size")]
public int entrySize { get; set; }
}
只有entryString始终为null!
要读出XML文件,我使用以下内容:
itemsReader ireader = null;
String path = @"PathtoString";
XmlSerializer serializer = new XmlSerializer(typeof(itemsReader));
var reader = File.OpenText(path);
ireader = (itemsReader)serializer.Deserialize(reader);
感谢您的帮助!
答案 0 :(得分:2)
您已使用entryString
属性修饰XmlElement
,该属性将在Bits内搜索元素Bits
。
但是你想要Bits
元素的内部文本。为此,我们有另一个名为XmlText
的属性。
所以改变这个
[XmlElement(ElementName = "Bits")]
public String entryString { get; set; }
到
[XmlText]
public String entryString { get; set; }
答案 1 :(得分:0)
我在您的输入上运行了您的代码并获得了输出,但我在Bits
类中看到属性entryString
具有属性
[XmlElement(ElementName = "Bits")]
但是在您的xml文件中,<Bits>
周围没有1st String
个标记。所以我加了他们并得到了:
<?xml version="1.0"?>
<item name="First Item" size="2">
<Bits value="1">
<Bits>firstOne</Bits>
</Bits>
<Bits value="2">
<Bits>secOne</Bits>
</Bits>
</item>
然后你的代码工作
因此您可以更改xml文件或删除该属性。你的电话