Jquery获取XML属性值,用转义不工作

jquery get xml attribute value, escaping with not working

本文关键字:转义 工作 获取 XML 属性 Jquery      更新时间:2023-09-26

注意:我最近发布了另一个关于这个的问题,但它被标记为重复,因为我没有明确说明我已经尝试了什么。我会试着解释我这次做得更好的地方。

这是我试图解析的XML文件的一部分:

<entry>
<id>http://www.google.com/m8/feeds/contacts/7ff84d8009d9a0b</id>
<updated>2010-04-11T12:47:03.281Z</updated>
<category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/contact/2008#contact'/>
<title type='text'>Name</title>
<link rel='http://schemas.google.com/contacts/2008/rel#edit-photo' type='image/*' href='https://www.google.com/m8/feeds/photos/media/7ff84d8009d9a0b/1B2M2Y8AsgTpgAm7PhCfg'/>
<link rel='self' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/full/7ff84d8009d9a0b'/>
<link rel='edit' type='application/atom+xml' href='https://www.google.com/m8/feeds/contacts/full/7ff84d8009d9a0b/127099002381000'/>
<gd:email rel='http://schemas.google.com/g/2005#other' address='email@email.com' primary='true'/>
</entry>

下面是我的JavaScript代码:

$("#importData").append("<ul>");
xmlDoc = $.parseXML(data);
$xml = $(xmlDoc);
$xml.find('entry').each(function () {
    var name = $(this).find("title").text();
    var email = $(this).find('[nodeName="gd:email"]').attr('address');
    $("#importData").append("<li>" + name + " - " + email + "</li>");
});
//$(this).text() + " - " + $xml.find("gd:email[address]").index(i)
$("#importData").append("</ul>");

下面是一个尝试(不成功)解析XML的jsfiddle: http://jsfiddle.net/DVXB9/4/

下面是另一个成功解析XML的jsfiddle,它将gd:email替换为gdemail(没有冒号):http://jsfiddle.net/DVXB9/5/

我已经尝试了各种方法来解析我的XML与名称空间,包括[nodeName=gd:email], [nodeName="gd:email"]gd'':email的所有建议由这个StackOverflow问题。

我不知道下一步该怎么做。其他与我的XML结构相似的人声称上述方法可以正常工作。然而,我得到的最好结果是输出值"未定义"。我做错了什么?

这里是更新的Fiddle

只是为了让你的例子工作,我不得不添加名称空间声明<entry xmlns:gd='http://www.some-url.org'>,否则$.parseXML抛出异常…之后,您可以使用$('gd'':email, email',$xml)访问电子邮件节点。