繁体   English   中英

将XML文档转换为IEnumerable

[英]Converting XML document into an IEnumerable

我有一个根据我的模型类反序列化的XML文档,现在我想将其转换为IEnumerable<XmlDocument>IEnumerable<string> ,这是函数的返回类型,因此我可以从MVC返回有效的XML答复REST API。

        XmlDocument xml = new XmlDocument();
        xml.LoadXml(responseStream);
        XmlSerializer x = new XmlSerializer(typeof(mSchoolModel));
        mSchoolModel mgp = (mSchoolModel)x.Deserialize(responseObj.GetResponseStream());
        //return 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 to XML

更新

意识到我可能读错了您的问题。 如果您有XmlDocument实例,并且需要返回IEnumerable<XmlDocument>那么您要做的就是将实例包装在一个集合中。 例如,

 IEnumerable<XmlDocument> xmlCollection = new XmlDocument[]{ xml };

当然,该方法可用于将任何对象包装到相同类型的对象的单例集合中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM