0

无论出于何种原因,如果我输入源 XML,评估就可以了。但是,如果我使用样式表转换 XML 并且它是 DocumentFragment,它会转到警报(“否”)。有人知道会发生什么吗?也许需要在运行评估之前转换 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);  


    }
4

3 回答 3

0

尝试使用XPathEvaluator.evaluate()

https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator/evaluate

于 2021-03-30T22:54:03.860 回答
0

我还尝试将 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'”

于 2021-04-02T17:46:59.693 回答
0

DocumentFragment 与 NodeList 共享大部分方法,因此 querySelector 和 querySelectorAll、firstChild 等方法与生成的 DocumentFragment 共享。

我想找到转换后的文档(A DocumentFragment)中的行数,所以使用 querySelector 而不是评估...

var allDivs = resultDoc.querySelectorAll('tr');

alert(allDivs.length);
于 2021-04-13T19:35:18.580 回答