2015-01-14 2 views
0

Как я могу прочитать атрибут self clos tag в XML-документе, используя чистый javascript? например. получить значение «url» в элементе xml ниже?Прочитать атрибут закрывающего тега с использованием чистого javascript?

<channel>  
    <item> 
    <title>News Title Goes Here<title> 
    <media:thumbnail width="144" height="81" url="http://news.bbcimg.co.uk/media/images/80270000/jpg/_80270552_mjadzelics_cleared_07.jpg"/> 
    </item> 
<channel> 

Javascript вызов getElementsByTagName работы по названию узла, но не на закрывающиеся СМИ: узел эскизов

+0

Является ли это разобрано как RSS, или вы к нему доступ, как HTML? – adeneo

+0

Обратите внимание, что тэг 'media: thumbnail' не' media'! – adeneo

+1

Это не тот JavaScript, о котором вам нужно беспокоиться, это механизм анализа документов, который вы используете. Вы делаете это в браузере? Проблема заключается в пространстве имен 'media', и в этом случае вам понадобится механизм, поддерживающий пространство имен. –

ответ

0

Я работал с этим как строка ... ИДК, какой подход вы но это должно помочь.

Вы не закрываете свой тег названия, это одно.

XML Исправление:

<title>News Title Goes Here</title> 

JS

var xml = (new DOMParser()).parseFromString(xml, "text/xml").querySelectorAll('[url]'), 
    mediaEls = ([].slice.call(xml)).filter(function(a) { return a.tagName == 'media:thumbnail'}), 
    urls = mediaEls.map(function(a, i) { return a.getAttribute('url') }); 
console.log(urls); 
// ["http://news.bbcimg.co.uk/media/images/80270000/jpg/_80270552_mjadzelics_cleared_07.jpg"] 
+0

Im get 't' не определен. Не могли бы вы посоветовать, что следует заменить? – Alex

+0

lol. да, оставил мое тестовое имя var там: 't'. проверьте редактирование ... он должен был быть 'xml' – Todd

0

мне удалось получить доступ к собственности с использованием другого метода. Я использовал javascript xml-вызов getElementsByTagNameNS, но для более старых браузеров IE я вернулся к вызову getElementsByTagName.

См. Код реализации ниже.

function getElementsByTagNameNS(xml, namespace, prefix, tag) 
{ 
    return xml.getElementsByTagNameNS ? xml.getElementsByTagNameNS(namespace, tag) : xml.getElementsByTagName(prefix + ':' + tag); 
} 

Чтобы использовать эту функцию:

var x = xmlDoc.getElementsByTagName("item"); 
var imgUrl = x.getElementsByTagNameNS("*", "thumbnail").getAttribute("url"); 
+0

Канал, к которому я пытался получить доступ, был BBC RSS XML Feed ([ссылка] http://feeds.bbci.co.uk/news/rss.xml?edition = целое). Для всех, кто интересуется потреблением этого канала в чистом javascript, перейдите по следующей ссылке ([ссылка] http://www.favour4u.com/) для полной реализации и просмотра источника в файле .js – Alex

Смежные вопросы