T>名单,LT的XML序列化; - XML根 [英] XML Serialization of List<T> - XML Root

查看:156
本文介绍了T>名单,LT的XML序列化; - XML根的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

#2(.NET 2.0)第一个问题:

First question on Stackoverflow (.Net 2.0):

所以,我想用下面的返回列表的XML:

So I am trying to return an XML of a List with the following:

public XmlDocument GetEntityXml()
    {        
        StringWriter stringWriter = new StringWriter();
        XmlDocument xmlDoc = new XmlDocument();            

        XmlTextWriter xmlWriter = new XmlTextWriter(stringWriter);

        XmlSerializer serializer = new XmlSerializer(typeof(List<T>));

        List<T> parameters = GetAll();

        serializer.Serialize(xmlWriter, parameters);

        string xmlResult = stringWriter.ToString();

        xmlDoc.LoadXml(xmlResult);

        return xmlDoc;
    }

现在这个将用于我已经定义了多个实体。

Now this will be used for multiple Entities I have already defined.

说我想获得名单,LT的XML;猫&GT;

该XML会是这样的:

<ArrayOfCat>
  <Cat>
    <Name>Tom</Name>
    <Age>2</Age>
  </Cat>
  <Cat>
    <Name>Bob</Name>
    <Age>3</Age>
  </Cat>
</ArrayOfCat>

有没有为我获得这些实体时,得到同样的根所有的时间?一个办法

Is there a way for me to get the same Root all the time when getting these Entities?

例如:

<Entity>
  <Cat>
    <Name>Tom</Name>
    <Age>2</Age>
  </Cat>
  <Cat>
    <Name>Bob</Name>
    <Age>3</Age>
  </Cat>
</Entity>

另外请注意,我不打算反序列化XML回列表&LT; CAT和GT;

推荐答案

有一个更简单的方法:

public XmlDocument GetEntityXml<T>()
{
    XmlDocument xmlDoc = new XmlDocument();
    XPathNavigator nav = xmlDoc.CreateNavigator();
    using (XmlWriter writer = nav.AppendChild())
    {
        XmlSerializer ser = new XmlSerializer(typeof(List<T>), new XmlRootAttribute("TheRootElementName"));
        ser.Serialize(writer, parameters);
    }
    return xmlDoc;
}

这篇关于T&GT;名单,LT的XML序列化; - XML根的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆