1
我有一个html元素,我想用作书签但我不能修改html文档。 我想将此元素存储在其他地方,并将其保存为Xpath查询。jquery将元素转换为xpath查询
有没有办法到HTML元素转换为XPath查询指着它?
我有一个html元素,我想用作书签但我不能修改html文档。 我想将此元素存储在其他地方,并将其保存为Xpath查询。jquery将元素转换为xpath查询
有没有办法到HTML元素转换为XPath查询指着它?
这里是从simular问题一个method收到了这样的DOM路径:
function createXPathFromElement(elm) {
var allNodes = document.getElementsByTagName('*');
for (segs = []; elm && elm.nodeType == 1; elm = elm.parentNode)
{
if (elm.hasAttribute('id')) {
var uniqueIdCount = 0;
for (var n=0;n < allNodes.length;n++) {
if (allNodes[n].hasAttribute('id') && allNodes[n].id == elm.id) uniqueIdCount++;
if (uniqueIdCount > 1) break;
};
if (uniqueIdCount == 1) {
segs.unshift('id("' + elm.getAttribute('id') + '")');
return segs.join('/');
} else {
segs.unshift(elm.localName.toLowerCase() + '[@id="' + elm.getAttribute('id') + '"]');
}
} else if (elm.hasAttribute('class')) {
segs.unshift(elm.localName.toLowerCase() + '[@class="' + elm.getAttribute('class') + '"]');
} else {
for (i = 1, sib = elm.previousSibling; sib; sib = sib.previousSibling) {
if (sib.localName == elm.localName) i++; };
segs.unshift(elm.localName.toLowerCase() + '[' + i + ']');
};
};
return segs.length ? '/' + segs.join('/') : null;
};
而用于测试的fiddle(路径在控制台示出)。
感谢您的回答。 – 2013-02-13 09:10:55
您是指DOM结构作为路径? – 2013-02-13 07:20:53
是的,我有一个Dom元素,并希望将其存储为XPath查询 – 2013-02-13 07:25:28