我已经掌握了XPath的基础知识,但在使用XPath确定C#代码中是否可以使用以下内容时遇到了一些麻烦(或者如果我需要将其移出到其他代码中,就像我目前所做的那样)。
我有一个XML文档,它包含以下结构:
<xml>
<parameters>
<setParameter name="SomeName" value="SomeValue" />
</parameters>
</xml>
有多个设置参数值的位置。现在我需要做的只是检索那些包含name属性的某些值的setParameter节点。我可能有这些值的可能匹配列表,但它们不是完全匹配,它们将是节点名称属性必须包含的值。
例如,在上面的结构代码中,如果我有一个匹配的'men'值,它会返回节点,因为'men'包含在'SomeName'中
这是什么简写?
答案 0 :(得分:1)
检索名为value
的所有名为setParameter
的属性的值,其name
属性的值包含men
:
//setParameter[contains(@name, 'men')]/@value
检索名为setParameter
的所有节点(可以替换为/xml/parameters/setParameter
)
检查当前节点选择的属性
如果name
属性的值包含men
检索value
属性的值。
答案 1 :(得分:0)
我认为没有办法将属性与通配符匹配,但您可以使用contains
方法,例如:
//parameters/setParameter[contains(@name, "stringexample")]
答案 2 :(得分:0)
根据您的XPath
版本,这可能有效或可能无效:
//setParameter[matches(@name,"men", "i") or matches(@name,"else", "i")]
这应该<setParameter>
与包含name
或"men"
的{{1}}属性相匹配。它不区分大小写
尝试让我知道结果