【问题标题】:How to parse xml using jquery $.parseXML?如何使用 jquery $.parseXML 解析 xml?
【发布时间】:2016-10-07 20:34:47
【问题描述】:

我没有解析 xml 文档的经验,所以请多多包涵。在过去的几天里,我一直在努力解析下面给出的 xml 示例!

在搜索互联网并阅读其他 cmets 后,我得出结论,最好的方法是将 $parseXML 用于我处理的 xml 类型。

我验证了 xml 并使用了以下代码,但我不断收到无效的 xml! 我的目标是获取属于<dict> 的所有字符串值,并在<tr> 中使用它们。因此,如果专家帮助我修复此损坏的代码,我将不胜感激。

这是我想在 div 中放置键值的方式:

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);

javascript:

<html>
<head>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script>
function myfunction(){
alert("me here");

var 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>';
    xmlDoc = $.parseXML( xml ),
    $xml = $( xmlDoc ); 




$($xml).each(function(){

//alert($(this).find("dict>string").text());
//alert($(this).find("dict>key").text());
alert($(this).find("dict>categoryIcon>string").text());
});

};
</script>
</head>
<body>
<button onclick="myfunction()">parse</button> 
</body>
</html>

要解析的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>

【问题讨论】:

    标签: javascript jquery xml xml-parsing parsexml


    【解决方案1】:
        <script>
        function myfunction() {
            alert("me here");
            var 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>';
            xmlDoc = $.parseXML(xml),
            $xml = $(xmlDoc);
    
            $.each($xml.find('dict string'), function () {
                console.info($(this).text());
            });
        }
        </script>
    

    或者您也可以在each 语句$xml.find('dict&gt;array dict string') 中执行此操作

    【讨论】:

    • 感谢您的帮助。我知道在 firefox 上它不起作用但在 chrome 上有效?我如何获得单个键值而不是所有键名。例如,我想要以下键名的值,categoryIcon 是蔬菜和somsite.com/categories/2.jpg?我尝试过这样但没有任何结果:$.each($xml.find('dict>categoryIcon>string'), function () {
    • 您的 xml 结构错误,您应该将 &lt;key&gt; &lt;string&gt; 分组到一个元素中。像这样:&lt;data&gt;&lt;key&gt;id&lt;/key&gt;&lt;string&gt;1&lt;/string&gt;&lt;/data&gt; 这样,您就可以获取所有数据,然后在需要时查找密钥和字符串。像这样的东西:$.each($xml.find('dict&gt;data'), function () { var keyText = $(this).find('key').text(); var stringText = $(this).find('string').text(); });
    • 嗯,xml 是我接收它的方式,我无法控制如何在服务器端更改其结构。所以你说没有办法为每个字典获取键值?我的目标是获取各个键名及其对应的值,因此我将它们打印在 html 上
    • 有。等我回家后我会回来的。
    • 我想将每组 dict key vales(string valuse) 打印为一个 ,因为我展示了我的第一篇文章。使用 dict>string 分别打印字符串值如何打印每个 dict 字符串值一次进入 ?
    猜你喜欢
    • 2018-12-26
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    相关资源
    最近更新 更多