Еще один простой запрос LINQ to XML - PullRequest
0 голосов
/ 03 мая 2011

Это мой XML

 Dim X = <BODY>
   <HEAD1>
    <Eyes>BLUE</Eyes>
   </HEAD1>
   <HEAD2>
    <Eyes>BROWN</Eyes>
   </HEAD2>
   </BODY>

До сих пор мне удавалось получить части HEAD.Теперь, как я могу выполнить итерацию внутри частей HEAD?

 Dim HEADS = From element In X.Elements Select element.Name.LocalName
 For Each c In HEADS
   Dim Local As String = c
   Dim COLORSofEYES = SELECT child nodes WHERE c 'Something like that i guess
 Next

Приведенное выше должно возвращаться при первой итерации <Eyes>BLUE</Eyes> как ElementNodeType, а во второй <Eyes>BROWN</Eyes>

Ответы [ 4 ]

1 голос
/ 03 мая 2011

Следующий код (в C #):

        var x = XElement.Parse(
            @"<BODY>    
              <HEAD1>     <Eyes>BLUE</Eyes>    </HEAD1>    
              <HEAD2>     <Eyes>BROWN</Eyes>    </HEAD2>    </BODY>");

        foreach(var head in x.Elements())
        {
            Console.WriteLine("head: {0}, eyes' colour: {1}", head.Name.LocalName, head.Element("Eyes").Value);
        }

выдаст следующий вывод:

head: HEAD1, eyes' colour: BLUE
head: HEAD2, eyes' colour: BROWN

Что я понимаю, это то, что вы хотите.

0 голосов
/ 03 мая 2011

Вы можете написать это в одном запросе LINQ

в C#

IEnumerable<XElement> de = from p in xmlTree.Elements().Elements() 
                            select p;

output

<Eyes>BLUE</Eyes>

<Eyes>BROWN</Eyes>

Надеюсь, я правильно понял ваш вопрос.

Примечание: в вашем случае вы можете использовать Descendants также

Descendants: yield entire child and sub-tree
Elements   :  yield through only through your child
0 голосов
/ 03 мая 2011

Это странный формат.Я не уверен, что именно вы хотите повторить.Если вы просто хотите перебрать все <Eyes>, вы можете просто сделать это:

Dim query = X...<Eyes>

В противном случае, если вы просто хотите получить все дочерние элементы каждого <HEAD...>, вы можете сделать это:

Dim query = X.Elements.SelectMany(Function(e) e.Elements)

Или с XPath:

Dim query = X.XPathSelectElements("/*/*")
0 голосов
/ 03 мая 2011

Нашли это!

Dim COLORSofEYES = From d In X.Descendants(Local).Descendants Select d
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...