читать XML через jQuery (читать переменную) - PullRequest
0 голосов
/ 10 декабря 2010

Я могу напрямую читать XML-канал с помощью jQuery, но когда я отображаю возвращаемый XML-документ с помощью 'console.log', тег 'description' только показывает '# cdata-section' в консоли, но он может отображатьполное содержание, когда я помещаю их в HTML.Вывод представляет собой полное содержание статьи, как показано ниже «Пример содержимого».

Пример содержимого:

<p> line 1 line 1 line 1</p>
<p> line 2 line 2 line 2</p>
<img src='..' />
<p> ... ... </p>

Теперь, если я получу его через .ajaxиспользуя jQuery, я буду использовать переменную 'desc' для хранения этого узла 'description' (который содержит содержимое образца выше), но как мне узнать, сколько элементов 'p' или 'img' в этой переменной 'desc'?

Я хочу получить элемент what внутри этой переменной 'desc', моя цель - прочитать тег img.Есть ли способ сделать это?Примечание: перед включением в текст HTML.

XML:

<channel>​
 <title>​Property​</title>​
 <link>​</link>​
 <lastbuilddate>​Wed, 13 Oct 2010 23:50:51 GMT​</lastbuilddate>​
 <generator>​FeedCreator 1.8.0-dev (info@mypapit.net)​</generator>​
 <atom:link href=​"sample.com" rel=​"self" type=​"application/​rss+xml">​</atom:link>​
 <item>​
  <title>​sample title​</title>​
  <description>​
    #cdata-section
  </description>​
  <pubdate>Wed, 08 Dec 2010 23:04:25 GMT</pubdate>
 </item>​
<channel>​

jQuery:

$.ajax({
 type: "GET",
 url: "http://feed6.xml",
 dataType: "xml",
 success: function(xml) {
  console.log(xml);
  $(xml).find('channel').each(function(){
   $(this).find('item').each(function(){
   var desc = $(this).find('description').text();
   console.log(desc);
  });
 });
 }
});

Ответы [ 3 ]

2 голосов
/ 10 декабря 2010

попробуйте это .....

$(xml).find('channel').each(function(){
   $(this).find('item').each(function(){
      var desc = $(this).find('description').text();  
      var newTag =document.createElement("div");  
      newTag.innerHTML = desc;
      var imgTag = newTag.getElementsByTagName("img");
   });
});
0 голосов
/ 10 декабря 2010

$(this).find("description"); вернет вам завернутый в jquery фрагмент XML.

Предполагая, что содержимое не упаковано в cdata, вы можете использовать обход jquery, как HTML.

e.g. $(this).find("description").find("p").each(function() { // whatever });

Если это оболочка cdata, то, к сожалению, jQuery не поддерживает функцию, подобную html () для xml, но вы можете развернуть объект jquery, а затем перевернуть узел описания xml. Примерно так:

var content = $($(this).find("description")[0].nodeValue);
0 голосов
/ 10 декабря 2010

Кажется, проблема в этой строке:

var desc = $(this).find('description').text();

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

var desc = $(this).find('description').html();
var theImageYouwant = desc.find('img');
...