用jquery读取这个xml

时间:2011-07-21 20:25:32

标签: javascript jquery xml

我在使用jQuery读取这个xml时遇到了麻烦。

http://jsfiddle.net/VLtqY/2/

XML:

<myElements type="AA" coID="A923">
 <element1>01</element1> 
 <element2>02</element2>
 <element3>03</element3>
</myElements>

我正在寻找以下输出:

element1=01
element2=02
element3=03

请帮助。

4 个答案:

答案 0 :(得分:2)

首先,您需要将xml变量包装在对jQuery函数的调用中,如$(xml)中所示。然后,对children()的调用将获得所有目标元素。

这是一个非常基本的(和草率的)迭代元素的工作示例,但它只是需要更改的选择器:

var xml = '<myElements type="AA" coID="A923"><element1>01</element1> <element2>02</element2><element3>03</element3></typeData>';

var myOutput = $("#output");

myOutput.append("=== start ===<br />");
$(xml).children().each(function () {
    var xmlnode = $(this);
    myOutput.append(this.tagName + xmlnode.text() + '<br/>');
});

myOutput.append("=== end ===");

工作演示:http://jsfiddle.net/UByfW/2/

答案 1 :(得分:1)

试试这个

$('*', xml).each(function () {

替换

$(xml).find("myElements").each(function () {

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

原因是不言自明的:你必须获取子元素,而不是根元素。

答案 2 :(得分:0)

您可以使用jQuery parseXML(请参阅docs)函数将XML字符串解析为XML文档对象。只需在变量声明和each循环之间的某处添加此行:

xml = $.parseXML(xml);

其余部分应该可以正常工作。您可以看到示例here

答案 3 :(得分:0)

我真的建议ajax这个。 IE讨厌jquery抓取xml的方式。我已经使用了很长时间,并且没有任何问题。

$.ajax({
    url: "path-to-file.xml",
    dataType: ($.browser.msie) ? "text" : "xml",
    success: function(data){
                            var xml;    
                            if (typeof data == "string") {
                               xml = new ActiveXObject("Microsoft.XMLDOM");
                               xml.async = false;
                               xml.loadXML(data);
                            } else {
                               xml = data;
                            }
                        alert($(xml).find('element1').text());
                                            alert($(xml).find('element2').text());
                                            alert($(xml).find('element3').text());
                    },//END SUCCSESS
    error: function(){
        alert("Sorry, There was an error loading this information. Refresh the page or try again later. ");
        history.go(-1);
    }
});//END AJAX CALL

我知道这看起来很多,但实际上并没有那么糟糕。把你的路径放到xml中,在.each()做你想做的事。