LINQ to XML不返回数据

时间:2012-03-02 22:54:46

标签: xml linq linq-to-xml

所以我有一个像这样的简单XML文档:

<Xml>
    <Node1></Node1>
    <Node2></Node2>
    ...
    <Node10></Node10>
        <Node10Stuff1></Node10Stuff1>
        <Node10Stuff2></Node10Stuff2>
    <Node11></Node11>
</Xml>

由于我正在获取XML使用帖子,我将其XDocument分配给我:

XDocument xd;    
using(StringReader s = new StringReader(postXml))
{
     xd = XDocument.Load(s);
}

这是我的LINQ查询:

var q = from c in xd.Root.Elements("Xml")
        select c;

foreach(var a in q)
{
     String node1= a.Element("Node1").ToString();
     ...etc...
}

但我的foreach循环总是空的。我的查询不应该返回所有节点吗?至少是<Xml>的孩子?

3 个答案:

答案 0 :(得分:2)

xd.Root已经是<Xml>元素 - 您目前正在寻找下面的<Xml>元素,这就是您没有找到任何内容的原因。

看起来你甚至不需要foreach循环,只需:

var root = xd.Root;

String node1 = (string) root.Element("Node1");
// etc

答案 1 :(得分:1)

我不记得确切的语法,但你正在寻找像Root.Elements()这样的东西。 “Xml”是你的根。

答案 2 :(得分:1)

var q = from c in xd.Descendants("Xml")
        select c;

foreach(var a in q)
{
    String node1= a.Element("Node1").ToString();
    ...etc...
}