列表的XML序列化<T>-XML根

关于Stackoverflow(.Net 2.0)的第一个问题:

因此,我尝试返回列表的XML,其中包含以下内容:

公共XmlDocument GetEntityXml()
{        
StringWriter StringWriter=新StringWriter();
XmlDocument xmlDoc=新的XmlDocument();
XmlTextWriter xmlWriter=新的XmlTextWriter(stringWriter);
XmlSerializer serializer=新的XmlSerializer(typeof(List<T>);
列出<T>参数=GetAll();
serializer.Serialize(xmlWriter,参数);
字符串xmlResult=stringWriter.ToString();
LoadXml(xmlResult);
返回xmlDoc;
}

现在,这将用于我已经定义的多个实体

假设我想获得List<的XML;Cat&gt

XML将类似于:

<ArrayOfCat>
<Cat>
<名称>汤姆&lt/名称>
<年龄>2&lt/年龄>
&lt/Cat>
<Cat>
<名称>鲍勃&lt/名称>
<年龄>3&lt/年龄>
&lt/Cat>
&lt/ArrayOfCat>

在获取这些实体时,有没有办法始终获取相同的根

例如:

<实体>
<Cat>
<名称>汤姆&lt/名称>
<年龄>2&lt/年龄>
&lt/Cat>
<Cat>
<名称>鲍勃&lt/名称>
<年龄>3&lt/年龄>
&lt/Cat>
&lt/实体>

还要注意,我不打算将XML反序列化回List<Cat&gt

有一个非常简单的方法:

公共XmlDocument GetEntityXml<T>()
{
XmlDocument xmlDoc=新的XmlDocument();
XPathNavigator nav=xmlDoc.CreateNavigator();
使用(XmlWriter=nav.AppendChild())
{
XmlSerializer ser=新的XmlSerializer(typeof(List<T>),新的XmlRootAttribute(“TheRootElementName”);
序列化(写入程序、参数);
}
返回xmlDoc;
}

发表评论