C# 匹配捕获的XPath查询

C# 匹配捕获的XPath查询,c#,xml,xpath,linq-to-xml,C#,Xml,Xpath,Linq To Xml,是否有任何方法可以使用匹配大小写在XML文档中进行搜索?在这篇文章中,我看到了使用精确匹配进行搜索: 我想要实现的是根据我的标准获得所有匹配元素 例如,如果我有以下XML: <Videos> <Misc URL="http://ccc/.webm1.webm" /> <Misc URL="http://bbb/OGG_2.ogv" /> <Misc URL="http://aaa/OGG_3.ogv" /> <Misc URL=

是否有任何方法可以使用匹配大小写在XML文档中进行搜索?在这篇文章中,我看到了使用精确匹配进行搜索:

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

例如,如果我有以下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
扩展的所有节点

你知道怎么得到这个吗?

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

上面的代码使用XPath 1.0,只需执行一个子字符串,并返回最后3个字符以匹配
.ogv

此外,为了简化上述内容,请使用XPath 2.0
//Videos/Misc[以(@URL,.ogv')结尾]

尝试使用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);