如何使用javascript解析xml键名及其值

How to parse xml key name and its value using javascript?

本文关键字:xml 何使用 javascript 解析      更新时间:2023-09-26

我正在从远程api接收如下示例的xml数据。谁能告诉我如何获得键名及其对应的键值并打印它们?例如,我想打印所有的categoryIcon和category值。

javascript:

$.get("http://www.someapisite.com/test.php",
        {
          dataType: "jsonp"
        },
        function(data,status){
       //here i want to print the key names and its corresponding values
}

xml解析:

<?xml version="1.0" encoding="UTF-8"?>
<dict><key>ItemLists</key>
<array><dict><key>id</key>
<string>1</string>
<key>name</key>
<string>fruits</string>
<key>category</key>
<string>US Fruits</string>
<key>categoryIcon</key>
<string>http://www.somsite.com/categories/1.jpg</string>
<key>country</key>
<string>US</string>
</dict>
<dict><key>id</key>
<string>2</string>
<key>name</key>
<string>Vegetable</string>
<key>category</key>
<string>Eu Vegetable</string>
<key>categoryIcon</key>
<string>http://www.somsite.com/categories/2.jpg</string>
<key>country</key>
<string>EU</string>
</dict>
</array>
</dict>
编辑:

对于每一组字典,我想打印一个<tr>,就像这样:

 var div = "<tr id='""+i+"'">'n" +
    "<td>"+i+"</td>'n" +
    "<td><img src='""+ categoryIcon +"'" height='"42'" width='"42'"></td>'n" +
    "<td>'n" +
    "<a href='"javascript:doit('id=" + id + "&name=" + name + "&category=" + category + "&categoryIcon=" + categoryIcon + "','"+ country +"')'" onclick='"selectLink(this);'">" + name + "</a><br> 'n" +
    "<br></td></tr>'n'n";
    $("#myDiv").append(div);

首先您需要使用parseXML()将字符串解析为XML文档,然后您可以在文档中找到键/值。您应该在array标签中找到key标签,并使用.each()迭代它。另外,key的值在下一个string标签中,您可以使用.next()来选择它。

var xml = $("#xml").html();
$(xml).find("array key").each(function(){
    var key = $(this).text();
    var value = $(this).next().text();  
    console.log(key + "=" + value);
});

var xml = $("#xml").html();
$(xml).find("array key").each(function(){
    console.log($(this).text() +"="+ $(this).next().text());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="xml">
  <dict>
    <key>ItemLists</key>
    <array>
      <dict>
        <key>id</key>
        <string>1</string>
        <key>name</key>
        <string>fruits</string>
        <key>category</key>
        <string>US Fruits</string>
        <key>categoryIcon</key>
        <string>http://www.somsite.com/categories/1.jpg</string>
        <key>country</key>
        <string>US</string>
      </dict>
      <dict>
        <key>id</key>
        <string>2</string>
        <key>name</key>
        <string>Vegetable</string>
        <key>category</key>
        <string>Eu Vegetable</string>
        <key>categoryIcon</key>
        <string>http://www.somsite.com/categories/2.jpg</string>
        <key>country</key>
        <string>EU</string>
      </dict>
    </array>
  </dict>
</div>