LinqToXML: получение элементов с заданным значением - PullRequest
1 голос
/ 23 апреля 2009

У меня есть этот xml-файл:

<objects>
  <object> 
    <value>test</value>
  </object>
  <object> 
    <value>foo</value>
  </object>
  <object> 
    <value>bar</value>
  </object>      
</objects>

Теперь я хочу запросить этот xml и извлечь все объекты-элементы, где текст в value-element = "foo"

Есть ли простой способ сделать это?

Я пробовал что-то вроде этого:

var objects = from e in xml.Elements("value")
              where e.Value.Equals("foo", StringComparison.OrdinalIgnoreCase)
              select e.parent;

Это не работает ..

Ответы [ 3 ]

3 голосов
/ 23 апреля 2009

Я думаю, что вы ищете

xml.Descendants("value")

xml.Elements () просто возвращает дочерние элементы ... если xml является вашим корневым XDocument, он ничего не вернет.

1 голос
/ 23 апреля 2009

Вы должны использовать xml.Descendants , предполагая, что вы запрашиваете из корня документа. Кроме того, я бы предпочел использовать string.Equals вместо метода Equals , вызывающего строку, возвращаемую свойством Value элемента (только в предпочтение.) Например:

var objects = from e in xml.Descendants("value")
                where string.Equals(e.Value, 
                                    "foo", 
                                    StringComparison.OrdinalIgnoreCase)
                select e.Parent;
0 голосов
/ 23 апреля 2009
 var objects = from e in xml.Descendants("object").Elements("value")
                          where e.Value.Equals("foo", StringComparison.OrdinalIgnoreCase)
                          select e.Parent;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...