使用具有节点属性的XPath
问题描述:
我有XPaths的基础知识,但在确定在C#代码中是否可以使用XPath时可能会遇到一些问题(或者如果我需要将它移出到其他代码中,目前已经完成)。使用具有节点属性的XPath
我有一个包含以下结构的XML文档:
<xml>
<parameters>
<setParameter name="SomeName" value="SomeValue" />
</parameters>
</xml>
在有多个设置参数值。现在我需要做的只是检索那些包含name属性的某些值的setParameter节点。我可能有这些值的可能匹配列表,但它们不会完全匹配,它们将是节点的名称属性必须包含的值。
例如在结构上面的代码,如果我有“人”要匹配的值,它会回来与节点,为“男人”被包含在“SomeName”
什么是速记去做这个?
答
检索命名value
具有名为setParameter
所有元素的所有属性的含有men
一个name
属性的值的值:
//setParameter[contains(@name, 'men')]/@value
- //的setParameter
检索名为setParameter
所有节点(可以被替换为/xml/parameters/setParameter
)
- [...]
检查当前节点选择
- 包含(@name, '男人')
返回true属性如果name
属性的值包含men
- /@值
检索value
属性的值。
答
我不认为有一种方法来匹配通配符的属性,但你可以使用contains
方法是这样的:
//parameters/setParameter[contains(@name, "stringexample")]
答
根据您的XPath
版本这可能工作也可能不:
//setParameter[matches(@name,"men", "i") or matches(@name,"else", "i")]
这应该与包含"men"
什么"else"
name
属性匹配<setParameter>
。这是不区分大小写的
试着让我知道结果
你有没有xpath的例子? – eLRuLL
很简单:“参数/ setParameter” –