首页 文章

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

提问于
浏览
1

对于下面的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()

谢谢和问候,Simak

2 回答

  • 1

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

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

    注意 .. ,其范围返回到 h1 元素的父元素,然后对父母的子元素进行操作 .

  • 1

    试试这个:

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

相关问题