反序列化XML注释文档C#

反序列化XML注释文档C#,c#,xml,serialization,C#,Xml,Serialization,我正在尝试反序列化一些C#文档XML,从下面代码段中的members节点开始 <?xml version="1.0"?> <doc> <assembly> <name>Licsp</name> </assembly> <members> <member name="T:Licsp.Parsing.SExp"> <su

我正在尝试反序列化一些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>
以下是呼叫代码:

        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>

总结
例子
评论

我不知道为什么反序列化失败了。我做错了什么?

既然
成员
是您的根,并且您需要集合中的
成员
子项,请将
[XmlArrayItem]
替换为
[xmlement]

xmlement
可用于单个节点,也可用于将具有相同名称的多个节点滚动到一个集合中

[XmlRoot("members")]
public class DocFile
{
    [XmlElement("member")]
    public List<DocItem> Items = new List<DocItem>();
}
[XmlRoot(“成员”)]
公共类文档文件
{
[XmlElement(“成员”)]
公共列表项=新列表();
}
XmlArrayItem
将与
XmlArray
一起使用。例如,如果您的根目录是
doc
,则此功能将起作用

[XmlRoot("members")]
public class DocFile
{
    [XmlElement("member")]
    public List<DocItem> Items = new List<DocItem>();
}