根据属性和节点值提取节点

时间:2013-06-14 12:06:22

标签: xml xpath

对于下面的XML,我试图根据属性和节点值提取节点。

基于属性class = pass和h1 contains('goals'),我试图提取下面的输出。

“目标”是节点值字符串“1任务目标”的一部分

1个任务目标 object1 Object2的

<body>
  <article>
    <body>
      <section>
        <h1>intro1</h1>
        <region>introd1</region>
        <region>introd2</region>
      </section>
      <section>
        <h1 class="pass">1 task objectives</h1>
        <region>object1</region>
        <region>object2</region>
      </section>
    </body>
  </article>
</body>

下面是我正在尝试的XPath表达式。但是,这并没有给出任何结果。你能指出我做错了吗?

//body//section//h1[contains(.,'objectives') and @class="pass"]/*/text()

谢谢&amp;问候, 西马克

2 个答案:

答案 0 :(得分:1)

您正在选择h1元素,但仅在其子节点中运行。您需要的xpath表达式是:

//body//section//h1[contains(.,'objectives') and @class='pass']/../*/text()

请注意..范围退回到h1元素的父级,然后对父母的子级进行操作。

答案 1 :(得分:1)

试试这个:

//body/section/h1[contains(.,'objectives') and @class='pass']/..//text()