所以我有一个像这样的简单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>
的孩子?
答案 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...
}