将XML文档转换为IEnumerable

本文关键字:IEnumerable 转换 文档 XML | 更新日期: 2023-09-27 18:12:36

我有一个XML文档,我已经根据我的模型类反序列化,现在我想把它转换成一个IEnumerable<XmlDocument>IEnumerable<string>,这是我的函数的返回类型,所以我可以从我的MVC REST API返回有效的XML回复。

        XmlDocument xml = new XmlDocument();
        xml.LoadXml(responseStream);
        XmlSerializer x = new XmlSerializer(typeof(mSchoolModel));
        mSchoolModel mgp = (mSchoolModel)x.Deserialize(responseObj.GetResponseStream());
        //return xml;

那么谁能帮我如何将其转换为IEnumerable ?

将XML文档转换为IEnumerable

使用LINQ-to-XML API

  1. XmlDocument实例转换为XDocument实例。说明可在:http://blogs.msdn.com/b/xmlteam/archive/2009/03/31/converting-from-xmldocument-to-xdocument.aspx
  2. XDocument实例上使用Elements()Descendants()方法获取IEnumerable<XElement>
  3. 使用LINQ Enumerable.Select()操作符将IEnumerable<XElement>转换为IEnumerable<string>

下面是一个简单的例子:

IEnumerable<string> elements 
  = XDocument
    .Load(new XmlNodeReader(xml))
    .Elements()
    .Select(element => element.ToString());

*注意:由于有效的XML文档只能有一个根节点,因此上面示例的结果集合不会很有趣,但是这里应该有足够的集合来获得所需的内容。如果您熟悉XPath,您可能会发现使用LINQ to XML的XPath扩展更容易获得所需的元素。参见:如何使用XPath查询LINQ到XML

更新我意识到我可能读错了你的问题。如果你有一个XmlDocument实例,你需要返回一个IEnumerable<XmlDocument>,你所要做的就是把实例包装在一个集合中。例如,
 IEnumerable<XmlDocument> xmlCollection = new XmlDocument[]{ xml };

当然,这种方法可以用于将任何对象包装成相同类型对象的单例集合。

相关文章: