1

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

基于属性 class=pass 和 h1 包含('objectives'),我正在尝试提取以下输出。

“目标”是节点值字符串“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()

谢谢和问候, 西马克

4

2 回答 2

1

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

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

请注意..which 作用域返回到h1元素的父级,然后改为对父级的子级进行操作。

于 2013-06-14T12:51:12.377 回答
1

尝试这个:

//body/section/h1[contains(.,'objectives') and @class='pass']/..//text()
于 2013-06-14T12:53:44.183 回答