使用JQUERY / AJAX遍历XML文件

时间:2019-02-27 08:31:15

标签: javascript ajax xml

我有这样的代码:

    <!DOCTYPE html>
<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>

<body>

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

<script>

    var x, i ,xmlDoc;
    var txt = "";
    var text = "";

    $.ajax({
        type: "GET" ,
        url: "data.xml" ,
        dataType: "xml" ,
        success: function(xml) {

            //  xmlDoc = $.parseXML(xml);

            $(xml).find('object').each(function(){
                console.log($(this).text());
                console.log($(this).nodeName);
            });
        }
    });


    document.getElementById("demo").innerHTML = txt;
</script>

</body>
</html>    

这会吐出字段的值,但是如何获得XML节点的名称呢?所以在这样的文件中:

   <root>
<item>hello</item>
</root>

我只会收到“你好”

我需要“物品”和“你好”之类的东西

有可能吗?谢谢!

2 个答案:

答案 0 :(得分:0)

使用示例XML,已经显示了此示例。您可以将它们替换为动态XML。

var x, i ,xmlDoc;
var txt = "";
var text = "";
// Replace with your dynamic xml
var text = "<root>"+
"<item>hello</item>"+
"</root>";
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(text,"text/xml");

// documentElement always represents the root node
x = xmlDoc.documentElement.childNodes;
for (i = 0; i < x.length ;i++) {
  console.log("Node :",x[i].nodeName);
  console.log("Value :",x[i].childNodes[0].nodeValue);
  txt += x[i].nodeName + ": " + x[i].childNodes[0].nodeValue + "<br>";
}
document.getElementById("xmlData").innerHTML = txt;
<div id="xmlData"></div>

来源:https://www.w3schools.com/xml/tryit.asp?filename=try_dom_parsertest3

答案 1 :(得分:0)

您正在寻找xml响应中不存在的object标记。 (此外,由于您正在使用datatype: 'xml' JQuery,因此将返回XMLElement)。而是寻找item标签,然后可以访问nodeNametextContent属性。

https://jsfiddle.net/zms0qwa1/