Хотя мы не можем сказать наверняка без анализируемого XML, обычная причина «получения пробелов» из childNodes[0]
(firstChild
) заключается в том, что между начальным тегом родителя и начальным тегом есть пробельный узел Text. узел, который вы ищете:
<data>
<![CDATA[ foo ]]>
</data>
В синтаксическом анализаторе XML, который сохраняет разделы CDATA, у элемента data
будут три дочерних элемента: узел Text, содержащий новую строку и несколько пробелов; узел CDATASection; и еще один текстовый узел с новой строкой.
Таким образом, вы могли бы взять childNodes[1]
, но это немного хрупко ... в частности, оно сломалось бы для парсера XML, который превращает разделы CDATA в текст, где у вас будет один дочерний текст содержащий foo
и все пробелы. Вероятно, лучше взять textContent
элемента <data>
(за исключением, конечно, с отступом до innerText
для IE).