使用jQuery解析XML的奇怪错误

时间:2011-04-25 23:21:28

标签: jquery xml

任何人都可以在jQuery中解释这种奇怪的行为吗?我正在使用1.5.2版本。

var myxml = '<photo><Point srsName="EPSG:4326"><coordinates>0.153933,52.204674</coordinates></Point><id>24917</id><latitude>52.204674</latitude><longitude>0.153933</longitude><feature>3</feature><caption>No parking.</caption><url>http://www.google.co.uk</url><imageUrl>http://www.google.co.uk</imageUrl><thumbnailUrl>http://www.google.co.uk</thumbnailUrl><thumbnailSizes>60|120|150|180|200|250|300|350|400|400|425|450|500|640</thumbnailSizes></photo>';
console.log($(myxml).find('latitude').text());     
console.log($(myxml).find('caption').text());

latitude输出正确的值,但caption是一个空字符串。

我也尝试过使用nodeName,但我得到的结果相同。

有什么想法吗?谢谢!

更新:我还制作了一个jsFiddle来展示行为:http://jsfiddle.net/w8Z7z/

3 个答案:

答案 0 :(得分:1)

Caption似乎是一个保留字。所以,如果你使用例如captionX就可以了。

尝试使用其他nodeName。

var myxml = '<photo><Point srsName="EPSG:4326"><coordinates>0.153933,52.204674</coordinates></Point><id>24917</id><latitude>52.204674</latitude><longitude>0.153933</longitude><feature>3</feature><captionX>No parking.</captionX><url>http://www.google.co.uk</url><imageUrl>http://www.google.co.uk</imageUrl><thumbnailUrl>http://www.google.co.uk</thumbnailUrl><thumbnailSizes>60|120|150|180|200|250|300|350|400|400|425|450|500|640</thumbnailSizes></photo>';
console.log($(myxml).find('captionX').text());
console.log($(myxml).find('latitude').text());

答案 1 :(得分:1)

如果先解析xml,然后将其传递给jquery,则可以正常工作:

http://jsfiddle.net/w8Z7z/2/

var xmldoc=$.parseXML(myxml);  
alert($(xmldoc).find('caption').text());

答案 2 :(得分:1)

您没有告诉jQuery您正在使用XML。 caption是一个HTML标记和保留字,因此它变得混乱。您需要使用$.parseXML()

var myxml = '...(all that xml)...',
    xmlDoc = $.parseXML( myxml ),
    $xml = $( xmlDoc );
console.log($xml.find('caption').text());