2011-07-21 85 views
1

我无法通过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 

有一点帮助吧。

回答

2

首先,您需要在调用jQuery函数时包装xml变量,如$(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

试试这个

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

更换线路

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

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

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

+0

(+1)谢谢,我希望我能给你两个信用。但他有“this.tagName”,这也告诉我如何检索标记名值。 – capdragon

0

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

xml = $.parseXML(xml); 

它的其余部分应该正常工作即可。你可以看到一个例子here

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()中做你想做的事情。

+0

对不起格式化,该死的标签和空格有时会失控 –