我有这个html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" class="lang-ru">
<head></head>
<body>
<div id="content">
root
<div>first</div>
<div>second</div>
</div>
</body>
</html>
使用此选择器将按预期返回三个嵌套元素://*[@id="content"]/*
但尝试应用此选择器仅返回第一个嵌套的div://*[@id="content"]/div[1]
,并且返回节点列表为空
此选择器返回两个div都不起作用://*[@id="content"]/div
如何获取包含first
的第一个嵌套div,以及如何拥有所有嵌套的div,而没有像p
这样的其他元素。
答案 0 :(得分:1)
这是因为您将<html>
绑定到命名空间xmlns="http://www.w3.org/1999/xhtml"
。删除该属性即可使用。
或者,您可以告诉xpath
这样使用此命名空间:
const select = xpath.useNamespaces({mynamespace: "http://www.w3.org/1999/xhtml"});
const nodes = select('//mynamespace:div', doc);