如何使用LINQ选择XML文档中包含某些String的所有属性

时间:2010-05-09 02:20:26

标签: c# xml linq-to-xml

XPath: How to match attributes that contain a certain string类似但不使用XPath。可能吗?

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

基本上我想在文档中选择其属性名称包含“Foo”的所有属性值,因此它应该返回“BarFoo”,“FooBar”,“Foo”(va1,val2,val3)的值< / p>

2 个答案:

答案 0 :(得分:1)

像这样:

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

答案 1 :(得分: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。

BarFoo  val1
Foo     val2
FooBar  val3