不管出于什么原因,如果我输入了源XML,evaluate就会执行它自己的操作。但是,如果我使用样式表转换XML并且它是一个DocumentFragment,它将显示警告(“no”)。有谁知道这是怎么回事吗?也许需要在运行evaluate之前转换DocumentFragment?但是为了什么呢?非常感谢。
doc_trans=xsltProcessor.transformToFragment(doc_xml_source, document);
//var resultDoc=doc_xnl_source;
var resultDoc=doc_trans;
//var path = "/catalog/cd/title"
path="/html/body/table//row";
if (resultDoc.evaluate) {
alert("yes");
var nodes = rDoc.evaluate(path, resultDoc, null, XPathResult.ANY_TYPE, null);
var result = nodes.iterateNext();
while (result) {
alert(result.childNodes[0].nodeValue);
txt += result.childNodes[0].nodeValue + "<br>";
result = nodes.iterateNext();
}
} else {
alert("no");
var evaluator = new XPathEvaluator();
//DocumentFragment not a valid node type exception thrown here...
var resulty = evaluator.evaluate("//tbody/tr", resultDoc, null,
XPathResult.ORDERED_NODE_SNAPSHOT_TYPE);
alert( resulty.snapshotLength);
}发布于 2021-04-14 03:35:19
DocumentFragment与NodeList共享大多数方法,因此像querySelector和querySelectorAll、firstChild等方法都包含生成的DocumentFragment。
我想找出转换后的文档(A DocumentFragment)中的行数,所以使用querySelector而不是evaluate...
var allDivs = resultDoc.querySelectorAll('tr');
alert(allDivs.length);发布于 2021-03-31 06:54:04
尝试使用XPathEvaluator.evaluate()
https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator/evaluate
发布于 2021-04-03 01:47:00
我还尝试了将DocumentFragment (resultDoc)转换为HTML元素(zz)...
var zz=document.createElement("div2");
zz.appendChild(resultDoc);
var evaluator = new XPathEvaluator();
var resulty = evaluator.evaluate("//tbody/tr", zz, null,
XPathResult.ORDERED_NODE_SNAPSHOT_TYPE);正在生成异常...“TypeError:无法读取未定义的属性'snapshotLength‘”
https://stackoverflow.com/questions/66873921
复制相似问题