我在使用jQuery读取这个xml时遇到了麻烦。
XML:
<myElements type="AA" coID="A923">
<element1>01</element1>
<element2>02</element2>
<element3>03</element3>
</myElements>
我正在寻找以下输出:
element1=01
element2=02
element3=03
请帮助。
答案 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 ===");
答案 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()做你想做的事。