C#:XPath 选择具有包含子字符串的属性的节点?

Posted

技术标签:

【中文标题】C#:XPath 选择具有包含子字符串的属性的节点?【英文标题】:C#: XPath to select node with attribute containing a substring? 【发布时间】:2009-11-23 09:14:48 【问题描述】:

我可以使用 XPath 来选择代码包含 UK 的国家节点吗?

<country-list>
  <Country code="TW,UK,MY" />
  <Country code="US,CA,MX" />
  <Country code="IN,PR,VI,IR" />
  <Country code="Others" /> 
</country-list>

谢谢。

【问题讨论】:

只是好奇为什么在答案并没有真正解决您的问题时您接受了答案? 【参考方案1】:

试试contains() XPath 函数。

类似:

/Country[fn:contains(@code, "UK")]

快速的 Google 搜索可以找到 XPath 函数的详细信息: http://www.w3schools.com/xpath/xpath_functions.asp

【讨论】:

您好,我遇到了这个错误:[System.Xml.XPath.XPathException] = "Namespace Manager or XsltContext required. This query has a prefix, variable, or user-defined function." 如何我可以绕过它吗? 这是 'fn:' 命名空间前缀。尝试删除它。【参考方案2】:

你需要这样写:

/country-list/Country[contains(@code,'UK')]

【讨论】:

【参考方案3】:

您可以使用 Linq to XML - 只是一个想法

类似这样的:

var countryElement = from country in countryElement.GetAttribute("code")
  where country.Value.Contains("UK")
  select countryElement;

【讨论】:

【参考方案4】:

是的,做类似的事情

//Country[contains(@code, 'UK')]

选择了第一个 Country 元素

【讨论】:

以上是关于C#:XPath 选择具有包含子字符串的属性的节点?的主要内容,如果未能解决你的问题,请参考以下文章

xpath:查找具有给定属性的节点,其值包含字符串

xPath:只能选择具有一定数量的特定子节点的节点吗?

XPath可以只返回具有X子节点的节点吗?

在 C# 中使用 xpath 选择具有不同类的多个 div 节点

XPath如何选择具有相同值的子节点

XPath:选择具有显式“xmlns”属性的节点