Как получить доступ к xml текстовому узлу в JQuery

Добавьте -подтверждение: $ false для подавления подтверждения.

6
задан safoo 2 June 2009 в 04:08
поделиться

4 ответа

Я пришел к такому же решению:

  var xml = $("<root><item1>text1</item1><item2>text2</item2>more text here</root>");
  alert($(xml).contents().empty().end().text());
6
ответ дан 8 December 2019 в 17:26
поделиться

Итак, решение, которое я придумал, состоит в том, чтобы удалить узлы item1 и item2, оставив только текст:

    $(responseXML).find('item').each(function(){
         var item1_text = $(this).find('item1').text();
         var item2_text = $(this).find('item2').text();

         $(this).contents().empty(); //removes the other nodes

         var extra_text = $(this).text();

    }
4
ответ дан 8 December 2019 в 17:26
поделиться

Используйте функцию contents (). Например, если у вас есть фрагмент XML, например:

var root = $('<root><item1>text1</item1><item2>text2</item2>more text here</root>');

, то вы можете получить текст через:

var txt = root.contents()[2]

Это предполагает, что текстовый узел всегда является 3-м дочерним элементом . В противном случае, если вы не знаете позицию или у вас может быть узел, содержащий несколько текстовых узлов, вам следует собрать все текстовые узлы путем фильтрации:

var textList = root.contents().filter(function() { return this.nodeType == 3; });

Это возвращает массив текстовых узлов, обнаруженных во фрагменте XML. Чтобы получить доступ к строкам в списке, просто откройте срез массива:

var txt = textList[0];
4
ответ дан 8 December 2019 в 17:26
поделиться

Получит правильное корневое / текстовое значение. Текст можно разместить везде в корневом узле.

для:

<div id="xml"><root><item1>text1</item1><item2>text2</item2>more text here</root></div>

Примечание: "встроенный" xml не работает в Internet Explorer, но если вы замените root и itemX в примере допустимыми именами узлов Html, он тоже будет работать.

Объяснение: DOM обрабатывает пустые и текстовые узлы как элементы. если вы отлаживаете вышеуказанный .each (), вы увидите следующее:

alert( this.nodeName + '|' + this.nodeType + "|" + this.nodeValue);

#text|3| , ITEM1|1|null , #text|3| , ITEM2|1|null , #text|3| more text here

(Извините, форматирование не работает с венгерской клавиатурой, но все же)

0
ответ дан 8 December 2019 в 17:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: