【问题标题】:How do I retrieve XML tags by tag attribute如何按标签属性检索 XML 标签
【发布时间】:2011-11-09 10:29:42
【问题描述】:

我在 javascript 中遇到一些 XML 问题,如何只选择具有某些属性值的标签?

w3 schools 中的以下示例使用此 xml file

<?xml version="1.0" encoding="ISO-8859-1"?>

<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">XQuery Kick Start</title>
  <author>James McGovern</author>
  <author>Per Bothner</author>
  <author>Kurt Cagle</author>
  <author>James Linn</author>
  <author>Vaidyanathan Nagarajan</author>
  <year>2003</year>
  <price>49.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>

然后以下脚本获取价格标签中的所有文本并将其打印在新行上。

<html>
<body>
    <script type="text/javascript">
        function loadXMLDoc(dname){
            if (window.XMLHttpRequest){
                xhttp=new XMLHttpRequest();
            }
            else{
                xhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }

            xhttp.open("GET",dname,false);
            xhttp.send("");
            return xhttp.responseXML;
        }
        //getting the xml into a var to parse       
        xml=loadXMLDoc("books.xml");


        //the path in question
        path="/bookstore/book/price/text()"   ////how can i change this to only select the prices of the books where the category="COOKING" ?


        // code for IE
        if (window.ActiveXObject){
            var nodes=xml.selectNodes(path);

            for (i=0;i<nodes.length;i++)
                {
                    document.write(nodes[i].nodeValue);
                    document.write("<br />");
                }
        }
        // code for Mozilla, Firefox, Opera, etc.
        else if (document.implementation && document.implementation.createDocument){
            var nodes=xml.evaluate(path, xml, null, XPathResult.ANY_TYPE,null);
            var result=nodes.iterateNext();

            while (result)
                {
                    document.write(result.nodeValue + "<br />");
                    result=nodes.iterateNext();
                }
        }
    </script>
</body>
</html>

是否可以更改路径,以便脚本仅打印价格标签的文本,其中父标签“book”的类别属性为“COOKING”(我在当前路径的脚本中添加了注释是我认为我需要改变,但我不知道如何)?

我真的被卡住了,似乎不知道如何获得它。任何帮助都会很棒:)

【问题讨论】:

    标签: xml


    【解决方案1】:

    在您的路径中,您需要将例如//bookName/[@CATEGORY = COOKING] @ 放在它查看属性的位置。希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2010-10-14
      • 1970-01-01
      • 2012-03-17
      • 1970-01-01
      • 2021-11-22
      • 2012-08-22
      • 2010-09-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多