[英]Deserializing XML comment documentation C#
我试图反序列化一些C#文档的XML,开始于members
在下面的代码片段节点。
<?xml version="1.0"?>
<doc>
<assembly>
<name>Licsp</name>
</assembly>
<members>
<member name="T:Licsp.Parsing.SExp">
<summary>
Intermediary structure used by parser
</summary>
</member>
</members>
</doc>
每个member
都应反序列DocItem
; members
集合应反序列化为DocFile
。
[XmlRoot("members")]
public class DocFile
{
[XmlArrayItem("member", typeof(DocItem))]
public List<DocItem> Items = new List<DocItem>();
}
[Serializable()]
public class DocItem
{
[XmlAttribute("name")]
public string Name;
[XmlElement("summary")]
public string Summary;
[XmlElement("example")]
public string Example;
[XmlElement("remarks")]
public string Remarks;
}
这是调用代码:
using (var reader = new XmlTextReader(documentation))
{
reader.ReadToDescendant("members");
var deserializer = new XmlSerializer(typeof(DocFile));
DocFile helpfile = (DocFile)deserializer.Deserialize(reader.ReadSubtree());
}
我返回了DocFile
对象,但是Items
为空。 序列化DocFile
对象将产生以下结果:
<?xml version="1.0" encoding="utf-8"?>
<members xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Items>
<member name="name">
<summary>summary</summary>
<example>example</example>
<remarks>remarks</remarks>
</member>
</Items>
</members>
我不确定为什么反序列化失败了。 我究竟做错了什么?
由于members
是您的根,并且需要集合中的member
子代,因此将[XmlArrayItem]
替换为[XmlElement]
XmlElement
可以用于单个节点,也可以将许多具有相同名称的节点滚动到集合中。
[XmlRoot("members")]
public class DocFile
{
[XmlElement("member")]
public List<DocItem> Items = new List<DocItem>();
}
XmlArrayItem
与XmlArray
结合使用。 例如,如果您以doc
作为您的根目录而上一个级别,那将奏效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.