在XPath

时间:2017-02-14 10:01:25

标签: javascript xml xpath

http://www.w3schools.com/xml/tryit.asp?filename=try_xpath_select_cdnodes 嗨,这是原始示例的链接。我也复制粘贴代码在这里。

<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        showResult(xhttp.responseXML);
    }
};
xhttp.open("GET", "books.xml", true);
xhttp.send(); 

function showResult(xml) {
    var txt = "";
    path = "/bookstore/book/title"
    if (xml.evaluate) {                 // what is this line of code for?
        var nodes = xml.evaluate(path, xml, null, XPathResult.ANY_TYPE, null);
        var result = nodes.iterateNext();
        while (result) {
            txt += result.childNodes[0].nodeValue + "<br>";
            result = nodes.iterateNext();
        } 
    // Code For Internet Explorer
    } else if (window.ActiveXObject || xhttp.responseType == "msxml-document") {
        xml.setProperty("SelectionLanguage", "XPath");
        nodes = xml.selectNodes(path);
        for (i = 0; i < nodes.length; i++) {
            txt += nodes[i].childNodes[0].nodeValue + "<br>";
        }
    }
    document.getElementById("demo").innerHTML = txt;
}
</script>

</body>
</html>

我不明白if(xml.evaluate)声明的目的。 看起来它正在测试XPath的浏览器支持,但看起来它正在测试xml.evaluate是返回true还是false。

由于

2 个答案:

答案 0 :(得分:1)

“ if(xml.evaluate)”行用于检查浏览器类型。

如果浏览器类型是Chrome,Firefox,Opera等...,则将执行“ if(xml.evaluate)”函数中的代码。

仅当浏览器为Internet Explorer时,才会执行“ if(wind.ActiveXObject || xhttp.responseType ==“ msxml-document”)“中的代码。

答案 1 :(得分:0)

它有两个目的:

正在寻找这些文档,我已经达到https://developer.mozilla.org/en-US/docs/Introduction_to_using_XPath_in_JavaScript,看起来很有希望进一步理解它。