2009-10-13 83 views
2

我正在使用jQuery來解析RSS提要。每個<item>內都有一個名稱空間元素,如<content:encoded>我想選擇。我如何在jQuery中選擇它?jQuery解析RSS和命名空間元素,如<content:encoded>

$(xml).find('item') works but $(xml).find('item content') does not. 
+0

您可以發佈一個示例rss代碼,並告訴我們您嘗試選擇哪些項目? – jantimon 2009-10-13 11:40:47

+0

http://stackoverflow.com/questions/9451202/trying-to-get-contentencoded-with-jfeed – user3067992 2013-12-04 23:14:13

回答

5

您是否正在通過Ajax加載xml?然後,確保服務器將內容類型設置爲「text/xml」而不是「text/html」。

還要確保你想要的元素的標籤名稱確實是內容而不是別的東西(如content:encoded)。在這種情況下,嘗試:

.find('item content\\:encoded')? 

特殊字符,如:需要在jQuery選擇進行轉義。

+0

我檢查的第一件事。它是feed.xml,所以將它作爲XML文件讀取。 問題是標記名稱是content:encoded。 – Corey 2009-10-13 11:59:22

+0

嘗試逃避:然後。 – kgiannakakis 2009-10-13 12:17:02

+4

.find('encoded')爲我工作... – 2012-03-12 20:56:39

0

這是我從一個搜索得到

jQuery選擇不 名稱空間感知,所以他們只用 的getElementsByTagName(而不是 getElementsByTagNameNS)來檢索他們的節點名稱屬性 元素(而比localName和 namespaceURI)。

看起來你需要使用document.getElementsByTagNameNS(namespace, tagname)

3

我知道這個線程是相當老做定期的js但它是用jQuery搜索這個當谷歌出現的第一個。搜索的最簡單方法是:

​​

希望能幫助別人。我花了幾個小時試圖找出訪問這些標籤的簡單方法。

+0

它已經有一段時間了,但是這對我來說很有幫助。謝謝! – Jimmy 2016-05-04 02:48:29

2

.find('[nodeName="content:encoded"]')它在Chrome和一些較舊的瀏覽器中工作正常。

0
.find('item encoded') 

將工作與'內容'(命名空間)部分。