用于过滤XML中的节点的Javascript

时间:2016-09-07 20:58:55

标签: javascript xml

我正在使用javascript来读取XML并使用以下代码在HTML中打印特定节点。

我希望根据网址的语言过滤节点。

例如,我想显示像这样的输出

http://www.w3schools.com/xml/xml_applications.asp?**lang=en**
http://www.w3schools.com/xml/apps.asp?**lang=en**

这是我正在尝试阅读的XML。目前,下面的JS打印HTML文件中的所有节点,我想过滤并显示只有lang = en的URL。

<?xml version="1.0" ?>
<bookstore xmls="http://www.google.com/sitemap.0.9">
   <book category="">
       <loc>http://www.w3schools.com/xml/xml_applications.asp?**lang=en**</loc> 
    </book>
    <book category="">
       <loc>http://www.w3schools.com/xml/xml_applications.asp?lang=fr</loc> 
    </book>
    <book category="">
       <loc>http://www.w3schools.com/xml/xml_applications.asp?lang=de</loc> 
    </book>
    <book category="">
       <loc>http://www.w3schools.com/xml/apps.asp?**lang=en**</loc> 
    </book>
</bookstore>

用HTML打印所有节点和输出的JS

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

function myFunction(xml) {
    var x, i, txt, xmlDoc; 
    xmlDoc = xml.responseXML;
    txt = "";
    x = xmlDoc.getElementsByTagName("loc");
    for (i = 0; i < x.length; i++) { 
        txt += x[i].childNodes[0].nodeValue + "<br>";
    }
    document.getElementById("demo").innerHTML = txt;
}
</script>

是否可以提供任何指针来过滤匹配条件的网址?

使用正确的方法

 for (i = 0; i < x.length; i++) { 
    if('txt'.indexOf('lang=en')) {

        txt += x[i].childNodes[0].nodeValue + "<br>";
    }

    }

0 个答案:

没有答案