LINQ to XML не возвращает данные - PullRequest
0 голосов
/ 03 марта 2012

Итак, у меня есть простой 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 ]

2 голосов
/ 03 марта 2012

xd.Root уже является элементом <Xml> - в настоящее время вы ищете <Xml> элементов ниже , поэтому вы не найдете ничего.

Похоже, вам даже не нужен цикл foreach, просто:

var root = xd.Root;

String node1 = (string) root.Element("Node1");
// etc
1 голос
/ 03 марта 2012
var q = from c in xd.Descendants("Xml")
        select c;

foreach(var a in q)
{
    String node1= a.Element("Node1").ToString();
    ...etc...
}
1 голос
/ 03 марта 2012

Я не помню точный синтаксис, но вы ищете что-то вроде Root.Elements(). «Xml» - это ваш корень.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...