Как сохранить HTML при разборе XML с помощью Jquery - PullRequest
3 голосов
/ 02 июня 2009

Предположим, у меня есть следующая структура XML:

<root>
 <item>
  <item1>some text is <b>here</b></item1>
  <item2>more text is here</item2>
 </item>
</root>

Я могу разобрать xml, используя что-то вроде:

$(responseXML).find('item').each(function(){
             var first_text = $(this).find('item1').text();
             var second_text = $(this).find('item2').text();
}

Но HTML не сохраняется при использовании .text (). html () недоступен для xml в jquery.

Есть идеи, как сохранить внутренний html при разборе xml?

Ответы [ 2 ]

4 голосов
/ 02 июня 2009

вложите разделы, которые вы не хотите интерпретировать как XML в разделах CDATA например,

<root>
 <item>
  <item1><![CDATA[some text is <b>here</b>]]></item1>
  <item2><![CDATA[more text is here]]></item2>
 </item>
</root>

РЕДАКТИРОВАТЬ: Обратите внимание, если использование .text () не работает, попробуйте следующее:

Цитирование из: http://dev.jquery.com/ticket/2425

Я только что столкнулся с этим. Для любопытства мой обходной путь вместо использования .text () для использования этого плагина, который я создал (просто замените .text () на .getCDATA ():

jQuery.fn.getCDATA = function() {
if($.browser.msie)
    return this[0].childNodes[0].nodeValue;
    // Other browsers do this
return this[0].childNodes[1].nodeValue;
 };

Это не красиво, но в моем случае все получилось.

3 голосов
/ 09 октября 2012

Text() даст вам текстовую информацию об узле. Однако, если вы используете:

var first_text = $(this).find('item1').html();
var second_text = $(this).find('item2').html();

вы также получите HTML-теги.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...