javascript - XPath:如何从包含未知标签名称的路径中提取节点?

标签 javascript html css xpath

<html><body>
<div id="start">
   <div>
      <div>NOT A TARGET</div>
   </div>
   <aBcDeFG>
      <div>target</div>
   </aBcDeFG>
</div>
</body></html>

有一个文档与此类似。 <aBcDeFG>标签是在每次页面刷新时生成的随机标签。我写了一个带通配符的 XPath 表达式来定位 target div :

$x('/html/body/div/*/div')

表达式返回两个div s,作为NOT A TARGET匹配:[div, div] .

$x('/html/body/div/*[2]/div')不起作用,返回值为空。

$x('/html/body/div/node()[2]/div')也不行,返回值为空。

如何仅通过索引定位未知标签?

最佳答案

你的 /html/body/div/*[2]/div 选择器 is correct .我猜你在开发者工具控制台中获取节点有困难。试试这个:

$x('/html/body/div/*[2]/div')[0].innerHTML

使用 document.evaluate 的示例

var r = document.evaluate('/html/body/div/*[2]/div', document, null, XPathResult.ANY_TYPE, null);
var n = r.iterateNext();
console.log(n.innerHTML);
<html><body>
<div id="start">
   <div>
      <div>NOT A TARGET</div>
   </div>
   <aBcDeFG>
      <div>target</div>
   </aBcDeFG>
</div>
</body></html>

关于javascript - XPath:如何从包含未知标签名称的路径中提取节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40587054/

相关文章:

css - 引导导航栏没有出现

javascript - 如何获得 3 周的日历?

javascript - 如何在 Angular 8 中将空格限制为第一个字符并在字符后允许空格

javascript - 如何在工具提示中显示图像?

javascript - AngularJS 可以做到这一点吗?

python - 如何使用 python 从非结构化 HTML 创建结构化数组

javascript - 如何通过ajax减少大数组的传输时间

javascript - 将表单填充到 templateURL 以与 ngMessages 一起使用

javascript - 在 Firefox、IE 和 Chrome 中检测窗口 onblur() 事件?

jquery - 隐藏 HTML 复选框,但在使用自定义图像复选框时保持功能