2012-07-20 79 views
0

我正在做一个Phonegap应用程序,我想使用xml文件,即我想在xml中搜索特定节点。我已经使用的xml文件如下所示。在xml中搜索特定节点

<bookstore> 
    <book category="cooking"> 
    <title lang="en">Everyday Italian</title> 
    <author>Giada De Laurentiis</author> 
    <year>2005</year> 
    <price>30.00</price> 
    </book> 
    <book category="children"> 
    <title lang="en">Harry Potter</title> 
    <author>J K. Rowling</author> 
    <year>2005</year> 
    <price>29.99</price> 
    </book> 
    <book category="web"> 
    <title lang="en">Learning XML</title> 
    <author>Erik T. Ray</author> 
    <year>2003</year> 
    <price>39.95</price> 
</book> 

在这里,我要搜索书的类别,并显示book.ie的所有细节,如果我搜索类别“网络”,它将返回其类书的详细信息“网页”。

在此先感谢.....

回答

0

你可以试试这个,如果你不希望使用任何JavaScript库:

<script type="text/javascript"> 
    function loadXMLString(txt) { 
     if (window.DOMParser) { 
      parser = new DOMParser(); 
      xmlDoc = parser.parseFromString(txt, "text/xml"); 
     } else // Internet Explorer 
     { 
      xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
      xmlDoc.async = false; 
      xmlDoc.loadXML(txt); 
     } 
     return xmlDoc; 
    } 

    window.onload = function() { 
     text = '<bookstore>' 
       + '<book category="cooking">' 
       + '<title lang="en">Everyday Italian</title>' 
       + '<author>Giada De Laurentiis</author>' 
       + '<year>2005</year>' 
       + '<price>30.00</price>' 
       + '</book>' 
       + '<book category="children">' 
       + '<title lang="en">Harry Potter</title>' 
       + '<author>J K. Rowling</author>' 
       + '<year>2005</year>' 
       + '<price>29.99</price>' 
       + '</book>' 
       + '<book category="web">' 
       + '<title lang="en">Learning XML</title>' 
       + '<author>Erik T. Ray</author>' 
       + '<year>2003</year>' 
       + '<price>39.95</price>' 
       + '</book>' 
       + '</bookstore>'; 

     xmlDoc = loadXMLString(text); 

     x = xmlDoc.getElementsByTagName("book"); 
     for (i = 0; i < x.length; i++) { 
      if (x[i].attributes["category"].value == "web") { 
       var message = ""; 
       for (var j = 0; j < x[i].childNodes.length; j++) { 
        message += x[i].childNodes[j].nodeName + ':' + x[i].childNodes[j].textContent + '\n' 
       } 
       alert(message); 
      } 
     } 
    } 
</script>