如何提取XDocument变量的XML内容?

时间:2010-10-13 09:35:38

标签: .net xml linq-to-xml

我在XDocument变量中有一个完整的XML文件,我可以从这个

这样的API获得
using (var reader = XmlReader.Create("website"))
        {
            doc = XDocument.Load(reader);
        }

我需要获取XML的结构并浏览其节点,但是通过XDocument变量,我只将整个文档放在一个节点中,并且不能自己提取每个节点。那么任何解决方案还是我应该采用其他方式?

4 个答案:

答案 0 :(得分:2)

http://www.hookedonlinq.com/LINQtoXML5MinuteOverview.ashx 是一篇关于建立它的好文章

您也可以使用linq查询

例如

var loaded = XDocument.Load("sdaf");
var q = from c in loaded.Descendants("contact")
        where (int)c.Attribute("contactId") < 4
        select (string)c.Element("firstName") + “ “ +
      (string)c.Element("lastName");

取消了我上面链接的页面。

在我看来,XDocument和XElement对象是个蠢货。 如果你不喜欢它们,那就去学习xpath和xslt。

答案 1 :(得分:1)

要获取XDocument的直接子节点,您可以尝试

    using (var reader = XmlReader.Create("website"))
    {
        var doc = XDocument.Load(reader);
        var childElements = doc.Elements();
    }

然后进行进一步处理,例如childElements.Descendants("name").Single().Value

答案 2 :(得分:0)

string xml = reader.ReadToEnd();

XmlDocument thisXmlDoc = new XmlDocument();
thisXmlDoc.LoadXml(xml); // In your case DOC

reader.Close();

XPathNavigator thisNavigator = thisXmlDoc.CreateNavigator();
XPathNodeIterator dossierNodes = thisNavigator.Select("Nodename/node");

List<Dossier> thisList = GetDossiers(dossierNodes);
thisDossierList = thisList.OrderBy(c => c.something).ToList();

他正在使用XDocument对象,而不是XMLDocument对象。 - John Nicholas 52秒前

该死的,你是对的。抱歉!只是试图帮助...

答案 3 :(得分:0)

XmlDocument xdoc;
xdoc = new XmlDocument();
xdoc.Load(XmlReader.Create("weblink"));

无法分析XDocument并提取其在XmlDocument中可能的XML值