我正在通过ajax调用网页。它的一部分响应是一小段XML。
我尝试解析它,但jQuery似乎只找到一些节点。例如:
<aaa>
<text>bbb</text>
<image>test</image>
</aaa>
它发现文本很好但从未找到图像节点。
但如果我将拼写从“image”更改为“zimage”,它就会找到它。在通过jQuery解析XML时是否保留“image”这个词?
我的jQuery代码非常简单......
$(data).find("zimage").each(function() {
alert("node found");
});
该代码有效,但是当我使用它时......
$(data).find("image").each(function() {
alert("node found");
});
它永远找不到任何东西。
答案 0 :(得分:3)
您使用的是哪个版本的jQuery?似乎jQuery 1.5具有parseXML()
函数:
var data="<aaa><text>bbb</text><image>test</image></aaa>";
var xmlDoc = jQuery.parseXML(data);
var $xmlDoc = jQuery(xmlDoc);
$xmlDoc.find("image").each(function() {
alert("node found"); //this alert pops up because find() returns [image]
});
如果您可以控制正在使用的jQuery版本,可以尝试将其替换为版本1.5,这样您就可以访问parseXML()
函数。它就像这个函数不对XML进行任何后处理,因此你得到一个与XML匹配的DOM。这样,您也不需要知道要修改哪些标记,这意味着要处理的特殊情况就更少了。
答案 1 :(得分:1)
因为javascript正在将您的“数据”转换为:
<aaa><text>bbb</text><img>test</aaa>
因此,这有效:
var xml = "<aaa><text>bbb</text><image>test</image></aaa>";
var data = $("<div />", { html: xml });
data.find("img").each(function() {
alert("node found");
});
在几乎所有需要解析XML的情况下,最好使用XML库。你永远不知道会弹出什么样的怪癖。
答案 2 :(得分:1)
您需要将xml转换为jQuery要遍历的DOM。 jQuery不能直接在xml上工作,但通过浏览器提供的DOM选择可以很好地工作。
这是一个为XML字符串返回DOM的插件: http://outwestmedia.com/jquery-plugins/xmldom/