<div class='ABC'>
<a href='url.com'></a>
<div class='XXX'></a>
<div id='EDF'>
<a href='url.com'></a>
</div>
<div class='XYZ'></div>
</div>
根据我的理解 //div[@class='ABC'//child::*]
应该产生 4 和 //div[@class='ABC 的搜索结果'//descendant::*]
应该产生 5。但实际上,两者都产生搜索结果 5。
谁能帮我理解其中的区别吗?
最佳答案
首先,将标记修复为格式良好( <div>
不能用 </a>
关闭):
<div class='ABC'>
<a href='url.com'></a>
<div class='XXX'></div>
<div id='EDF'>
<a href='url.com'></a>
</div>
<div class='XYZ'></div>
</div>
然后,修复您的 XPath 语法:
-
count(//div[@class='ABC']/child::*)
返回 4。 -
count(//div[@class='ABC']/descendant::*)
返回 5。
这应该符合您的期望,即XPath 子轴仅选择直接子级,而 XPath 后代轴递归地选择子级和子级的子级。
关于html - 子 XPath 轴和后代 XPath 轴有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47512532/