我試圖獲取XML文檔元素的內容,但元素中有一個冒號。
這條線適用於每一個元素,但在名稱中冒號的那些:
$(this).find("geo:lat").text();
我認爲結腸需要轉義。我該如何解決?
我試圖獲取XML文檔元素的內容,但元素中有一個冒號。
這條線適用於每一個元素,但在名稱中冒號的那些:
$(this).find("geo:lat").text();
我認爲結腸需要轉義。我該如何解決?
使用反斜槓,它本身應該逃出所以JavaScript並沒有吃,
$(this).find("geo\\:lat").text();
這不只是一個普通的元素名稱。這是一個合格的名稱,這意味着它是一個名稱,專用於名稱空間內的元素類型。元素類型名稱是'lat',名稱空間前綴是'geo'。
現在,jQuery無法很好地處理名稱空間,詳情請參閱bug 155。
眼下,作爲一種解決方法,你應該能夠選擇具有隻是本地名以下元素:
$(this).find("lat").text();
如果你有相同的本地名稱元素類型來區分,那麼你可以使用filter()
:
var NS = "http://example.com/whatever-the-namespace-is-for-geo";
$(this).find("lat").filter(function() { return this.namespaceURI == NS; }).text();
編輯:我的錯,我就是那個補丁已經登陸的印象。如果您需要的命名空間也利用亞當的選擇建議,並filter()
:
var NS = "http://example.com/whatever-the-namespace-is-for-geo";
$(this).find("geo\\:lat").filter(function() { return this.namespaceURI == NS; }).text();
,如果你有鍍鉻或WebKit的一個jQuery選擇問題不選擇它嘗試
$(this).find('[nodeName=geo:lat]').text();
這樣,在所有瀏覽器中都能正常工作
這個不適用於Chrome :( – vaske 2012-01-16 11:52:33
@Vaske,我使用jQuery的最新版本之一看到了Chrome中的相同情況,使用節點的後半部分冒號爲我工作後的名字。使用`.find(「lat」)`而不是`.find(「geo \\:lat」)`並且它對我很有用。 – 2012-01-19 22:50:09
@Mike是的,這有幫助,但我有命名空間問題,我返回的XML的一般問題,它包含