【发布时间】:2020-12-17 19:56:35
【问题描述】:
我有一个以下格式的 xml 文件:
<?xml version=""1.0"" encoding=""UTF-8""?>
<Options>
<Header>
<H1>A</H1>
<H2>B</H2>
<H3>C</H3>
</Header>
<Include>
<Option A1="something" A2="something">SomeValue</Option>
<Option A1="something" A2="something">SomeOtherValue</Option>
</Include>
</Options>
我设法使用序列化程序对标头进行反序列化,但遇到了选项问题。具体来说,我有以下 C# 对象:
[XmlRoot(ElementName="Option")]
public class Option {
[XmlAttribute(AttributeName="A1")]
public string A1 { get; set; }
[XmlAttribute(AttributeName="A2")]
public string A2 { get; set; }
[XmlText]
public string Text { get; set; }
}
[XmlRoot(ElementName="Include")]
public class OptionList {
[XmlArrayItem("Option")]
public List<Option> Options { get; set; }
}
我使用这个序列化器进行转换:
public IReadOnlyList<Option> ParseInclude(string xmlDocument)
{
using (var reader = new XmlTextReader(new StringReader(xmlDocument)))
{
var serializer = new XmlSerializer(typeof(OptionList));
reader.ReadToFollowing("Include");
var collection = (OptionList) serializer.Deserialize(reader);
return collection .Options ;
}
}
但我无法让它工作 - 因为Options 为空,所以我在 return 语句中不断收到 NullReferenceException。有什么想法吗?
【问题讨论】:
-
你的类Option应该是Include。
-
@jdweng 你说的包含是什么意思?
标签: c# .net xml-serialization