Это даст правильное значение корня/текста. Текст можно разместить везде в корневом узле.
<script type="text/javascript"> $().ready(function() { var xml = $('#xml').find('root').contents().each(function(i){ if (this.nodeName=="#text" && this.nodeType=="3" && this.nodeValue.length>2) alert(this.nodeValue); }); });
</script>
для:
<div id="xml"><root><item1>text1</item1><item2>text2</item2>more text here</root></div>
Примечания: "встроенный" XML не работает в Internet Explorer, но если заменить корень и itemX в примере с действующим nodenames 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
(К сожалению, форматирование не работает с венгерской клавиатурой, до сих пор)
Использование .html(), а не .text(), и вы получите исходное содержимое. –
за исключением .html() не доступен для xml – safoo