C# 使用带有节点属性的XPath
我已经掌握了XPath的基本知识,但在确定使用XPath在C#代码中是否可以实现以下功能时遇到了一些困难(或者我是否需要将其转移到其他代码中,就像我目前所做的那样) 我有一个XML文档,它由以下结构组成:C# 使用带有节点属性的XPath,c#,xml,xpath,C#,Xml,Xpath,我已经掌握了XPath的基本知识,但在确定使用XPath在C#代码中是否可以实现以下功能时遇到了一些困难(或者我是否需要将其转移到其他代码中,就像我目前所做的那样) 我有一个XML文档,它由以下结构组成: <xml> <parameters> <setParameter name="SomeName" value="SomeValue" /> </parameters> </xml> 其中有
<xml>
<parameters>
<setParameter name="SomeName" value="SomeValue" />
</parameters>
</xml>
其中有多个设置参数值。现在我只需要检索那些包含name属性特定值的setParameter节点。我可能有这些值的可能匹配列表,但它们不是完全匹配,而是节点的name属性必须包含的值
例如,在上面的结构代码中,如果我要匹配一个值'men',它将与节点一起返回,因为'SomeName'中包含'men'
该操作的简写方法是什么?为所有名为
setParameter
的元素检索名为value
的所有属性的值,这些元素的名称
属性值包含人
:
//setParameter[contains(@name, 'men')]/@value
- //设置参数
setParameter
的所有节点(可替换为/xml/parameters/setParameter
)
- [……]
- 包含(@name,'men')
name
属性的值包含men
- /@价值观
检索
值
属性的值。我认为没有办法将属性与通配符匹配,但您可以使用包含
方法,例如:
//parameters/setParameter[contains(@name, "stringexample")]
根据您的
XPath
版本,这可能有效,也可能无效:
//setParameter[matches(@name,"men", "i") or matches(@name,"else", "i")]
这应该将
与名称
属性相匹配,该属性包含“男性”
或某个“其他”
。它不区分大小写
请尝试让我知道结果您有xpath示例吗?非常简单:“parameters/setParameter”这是不区分大小写的吗?@Polyfun否,它区分大小写。有关不区分大小写的信息,请参阅。OP需要一个不区分大小写的匹配。@Polyfun我一定很困,但我看不到这个要求。