понимание использования linq для разбора xml - PullRequest
0 голосов
/ 09 марта 2011

У меня просто есть несколько кодов, чтобы прояснить мои сомнения в разборе linq xml. У меня есть следующее:

...
{

            XDocument xmlDoc = XDocument.Load(@"C:\Build.xml");
            var abc = from example in xmlDoc.Descendants("target")
                      select (string)target.Attribute("if");
            ...
            foreach(string example in abc)
           {
            ...
           }

            ...
           }

Могу ли я спросить, если это правда, что в строке select (string)target.Attribute("if") я выбираю строку из файла XML из значения «если», как показано в файле XML ниже:

<xml>
<target if="thevalue">
</target>
</xml>

тогда у меня есть эта строка: foreach(string example in abc)

Верно ли, что для каждой выбранной строки «значения» атрибута «if» я делаю что-то в цикле foreach.

1 Ответ

3 голосов
/ 09 марта 2011

Да, это правильно. Переменная «пример» в цикле foreach будет содержать значение атрибута «если».

  var abc = from target in xDocument.Descendants("target")
            select (string)target.Attribute("if");

  foreach (var example in abc)
  {
    Console.WriteLine(example);
  }

попробуйте приведенный выше код в консольном приложении, и вы увидите значения в окне консоли. Или вы можете использовать Debug.WriteLine (пример) в другом типе приложения

Однако это лучшее выражение запроса linq

  var abc = from target in xDocument.Descendants("target").Attributes("if")
            select target.Value;

или измените выражение запроса linq на

  var abc = from target in xDocument.Descendants("target")
            select target.Attribute("if").Value;

EDIT Чтобы помочь с вашей проблемой с отладчиком: Я наведя курсор мыши на abc, и я вижу, что отладчик всплывает в информационном окне, как показано на рисунке ниже

enter image description here

Это первые изображения показывают, что у «Представления результатов» есть те зеленые стрелки. Вам нужно нажать на эти стрелки, чтобы увидеть результат (как показано в сообщении рядом с ними)

Второе изображение затем показывает результаты enter image description here

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