据我了解,XPath 是一种在 XML 文档中导航元素的方法。
方向是 XPath -> element。
你如何反其道而行之?也就是说,根据已知的元素值计算 XPath?
例如,如何在 stackoverflow header 中找到“faq”链接的 xpath?
语言并不那么重要,我更感兴趣的是有助于我计算 XPath 的算法和/或库/技术。
最佳答案
这是一个简单的 JS 函数来完成它。它仅使用 previousSibling、nodeType 和 ParentNode,因此它应该可以移植到其他语言。然而,结果是不可读的(对于人类来说),并且在面对页面更改时不会特别鲁棒。
根据我的经验,如果手工编写 XPath 会更有用。但是,您当然可以制定一种算法来生成更漂亮(如果可能更慢)的结果。
function getXPath(node)
{
if(node == document)
return "/";
var xpath = "";
while (node != null && node.nodeType != Node.DOCUMENT_NODE)
{
print(node.nodeType);
var pos = 1, prev;
while ((prev = node.previousSibling) != null)
{
node = prev
pos++;
}
xpath = "/node()[" + pos + "]" + xpath;
node = node.parentNode;
}
return xpath;
}
关于javascript - 有没有办法根据网页中的已知值计算 XPath?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/900808/