选择具有特定属性的子节点的所有节点

时间:2015-07-10 21:01:44

标签: xml xpath

我正在尝试仅选择具有带c属性的子元素的元素。所以在这种情况下,它只是前两个元素。

<alpha>
  <a id="1">
    <b c="1"/>
  </a>
  <a id="2">
    <b c="1"/>
  </a>
  <a id="3">
    <b />
  </a>
</alpha>

有关如何做到这一点的任何想法?我试过以下没有运气:

/alpha/a/b/*[@c]
//a[b/*[@c]]

提前感谢您的帮助!

编辑:有人建议我咨询How to find the transaction is settled/Unsettled in Authorize.net?提出的解决方案,但是,该线程中解决的问题与我的不同(涉及子元素而不是子元素的属性)并且我没有能够从中推断我的问题的解决方案。

2 个答案:

答案 0 :(得分:1)

尝试以下experssion(缩写语法):

//a[*/@c]

或者您可以使用未缩写的语法:

/descendant::a[child::*/attribute::c]

答案 1 :(得分:0)

这应该按预期工作: // a / * [@ c]

选择任何节点&#34; // a&#34;与任何孩子&#34; / *&#34;属性c&#34; [@ c]&#34;。