将XPath与节点属性

时间:2017-02-13 16:11:29

标签: c# xml xpath

我已经掌握了XPath的基础知识,但在使用XPath确定C#代码中是否可以使用以下内容时遇到了一些麻烦(或者如果我需要将其移出到其他代码中,就像我目前所做的那样)。

我有一个XML文档,它包含以下结构:

 <xml>
     <parameters>
        <setParameter name="SomeName" value="SomeValue" />
     </parameters>
 </xml>

有多个设置参数值的位置。现在我需要做的只是检索那些包含name属性的某些值的setParameter节点。我可能有这些值的可能匹配列表,但它们不是完全匹配,它们将是节点名称属性必须包含的值。

例如,在上面的结构代码中,如果我有一个匹配的'men'值,它会返回节点,因为'men'包含在'SomeName'中

这是什么简写?

3 个答案:

答案 0 :(得分:1)

检索名为value的所有名为setParameter的属性的值,其name属性的值包含men

//setParameter[contains(@name, 'men')]/@value
  • //的setParameter

检索名为setParameter的所有节点(可以替换为/xml/parameters/setParameter

  • [...]

检查当前节点选择的属性

  • 包含(@ name,&#39; men&#39;)

如果name属性的值包含men

,则返回true
  • / @值

检索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}}属性相匹配。它不区分大小写

尝试让我知道结果