2011-04-25 70 views
2

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

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/

回答

1

你没有告诉jQuery的你使用XML。 caption是一个HTML标记和保留字,所以它变得困惑。您需要使用$.parseXML()

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

谢谢!虽然我现在正在''.parseXML不是一个函数' - 任何想法? – simon 2011-04-25 23:48:29

+0

@simon:你在使用jQuery 1.5+吗?这是在1.5中添加的。 – entropo 2011-04-25 23:53:21

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

如果您解析XML,然后再传递到jQuery的工作原理:

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

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

优秀。我有点走上了这条路(把XML声明放进去,但没有奏效),但这是一个更好的方法。 – 2011-04-25 23:41:01