jQuery разбирает RSS и элемент пространства имен, например <content: encoded> - PullRequest
3 голосов
/ 13 октября 2009

Я использую jQuery для разбора RSS-канала. В каждом <item> есть элемент пространства имен, такой как <content:encoded>, который я хочу выбрать. Как мне выбрать его в jQuery?

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

Ответы [ 4 ]

7 голосов
/ 13 октября 2009

Вы загружаете XML через Ajax? Затем убедитесь, что сервер устанавливает тип содержимого как «text / xml», а не «text / html».

Также убедитесь, что имя тега нужного элемента действительно является содержимым, а не чем-то другим (например, content: закодировано). В этом случае попробуйте:

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

Специальные символы, такие как: необходимо экранировать в селекторах jQuery.

4 голосов
/ 11 октября 2011

Я понимаю, что эта тема довольно старая, но она первая, которая появляется в google при поиске этого с помощью jquery. Самый простой способ сделать это с помощью:

.find('[nodeName="content:encoded"]')

Надеюсь, это кому-нибудь поможет. Последние несколько часов я пытался найти простой способ доступа к этим тегам.

2 голосов
/ 28 июня 2012

.find('[nodeName="content:encoded"]') он отлично работает в Chrome и некоторых старых браузерах.

0 голосов
/ 13 октября 2009

Это то, что я получил от поиска

Селекторы jQuery не являются с учетом пространства имен, поэтому они используют только getElementsByTagName (вместо getElementsByTagNameNS) для получения элементы по их атрибуту nodeName (а не по localName и NamespaceURI).

Похоже, вам нужно сделать это в обычном js, используя document.getElementsByTagNameNS(namespace, tagname)

...