对于下面的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;问候, 西马克
答案 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()