匹配catch的XPath查询

时间:2011-12-13 04:52:18

标签: c# xml xpath linq-to-xml

有没有办法在匹配大小写的情况下搜索XML文档?在这篇文章中,我看到完全匹配的搜索:XPath query for exact match

我想要实现的是根据我的标准获得所有匹配的元素。

就像我有以下XML一样:

<Videos>
<Misc  URL="http://ccc/.webm1.webm"  />
<Misc  URL="http://bbb/OGG_2.ogv"  />
<Misc  URL="http://aaa/OGG_3.ogv"  />
<Misc  URL="http://ccc/.webm4.webm"  />
<Misc  URL="http://bbb/OGG_5.ogv"  />
<Misc  URL="http://aaa/OGG_6.ogv"  />
</Videos>

我希望获取包含.ogv的所有节点,同样包含.webm个扩展名的所有节点。

知道如何获得这个吗?

2 个答案:

答案 0 :(得分:1)

//Misc[substring(@URL, string-length(@URL)-3)='.ogv']

以上使用XPath 1.0并只执行子字符串并返回最后3个字符以匹配.ogv

另外,为简化上述操作,请使用XPath 2.0 //Videos/Misc[ends-with(@URL, '.ogv')]

答案 1 :(得分:0)

尝试使用Linq-XML。

XDocument doc = XDocument.Load(file);
var result = doc.Descendants("Misc").Select(p => p.Attribute("URL"))
                     .Where(p => p.Value.EndsWith(".ogv"));
foreach (var t in result)
  Console.WriteLine(t.Value);
相关问题