2010-05-09 1 views
2

Как и для XPath: How to match attributes that contain a certain string, но без использования XPath. Является ли это возможным?Как выбрать все атрибуты, которые содержат определенную строку в документе XML, используя LINQ

<c BarFoo="val1"> 
    <d Foo="val2" someAttribute=""> 
     <e FooBar="val3" /> 
    </d> 
</c> 

В основном я хочу, чтобы выбрать все значения атрибутов в документе, что их имя атрибута содержит «Foo», поэтому он должен возвращать значения «BarFoo», «FooBar», «Foo» (va1, val2 , val3)

ответ

1

как это:

elem.DescendantsAndSelf().Attributes().Where(a => a.Name.LocalName.Contains("Foo")) 
0

Моя стартовая точка разбора XML-строку в объект XElement.

var query = element.DescendantsAndSelf().Attributes() 
    .Where(attr => attr.Name.LocalName.Contains("Foo")) 
    .Select(attr => new { Name = attr.Name, Value = attr.Value }); 

Результатом этого является IEnumerable анонимного типа, содержащего имя каждого атрибута и значение.

Смежные вопросы