假设我的部分文件是
<div>
<b>Hello,</b> world!
</div>
<div>
<span>
<b>This</b> is a <b>wonderful</b> day!
</span>
</div>
我想选择第一个div,即子节点等于<b>Hello,</b> world!
的div,我该如何编写表达式。还有第二个怎么样?
当然我可以有一个复杂的表达式,如//div[text()[1] = ' world' and child::b[position()=1 and text='Hello,']]
,但如果子树变得有点复杂,复杂性会增长得非常快。
理想情况下,如果有一个函数subtree
和equals
返回子树并分别比较两个树,那么我可以简单地写equals(subtree(), '<span><b>This</b> is a <b>wonderful</b> day!</span>')
。
有什么想法?有没有适合我需要的功能?感谢。
答案 0 :(得分:0)
如果您想在文档中找到第一个div,请使用/descendant::div[1]
- 或 - (//div)[1]
- 注意这些内容,他们需要在此处获得正确的行为。
比较两个元素是一个更复杂的问题。 XPath 1中没有内置任何内容。某些环境将支持XPath 2,它定义deep-equal()
- 请参阅http://www.w3.org/TR/2005/CR-xpath-functions-20051103/#func-deep-equal。