Содержимое внутри CDATA не отображается должным образом при обработке через JavaScript - PullRequest
0 голосов
/ 28 сентября 2010

У меня есть XML-документ с примером содержимого, подобным этому:

<someTag>
 <![CDATA[Hello World]]>
</someTag>

Я анализирую приведенный выше XML в JavaScript. Когда я пытаюсь получить доступ и визуализировать текст Hello World , используя xmldoc.getElementsByTagName("someTag")[0].childNodes[0].textContent, я получаю только пустой текст на экране.

Код не возвращает undefined или каких-либо сообщений об ошибках. Поэтому я думаю, что код правильно обращается к сообщению. Но из-за CDATA он не отображается должным образом на экране.

В любом случае, чтобы решить проблему и вывести Hello World из этого XML-файла?

Ответы [ 2 ]

1 голос
/ 28 сентября 2010

Обратите внимание, что поведение Firefox абсолютно корректно.someTag имеет трех дочерних элементов:

  • Узел Text, содержащий пробел между <someTag> и <!CDATA.Это одна новая строка и один пробел;
  • сам узел CDATASection;
  • другой пробел Text, содержащий один символ новой строки между концом CDATA и тегом close

Лучше не полагаться на то, какая комбинация узлов текста и CDATA может существовать в элементе, если вам нужно только текстовое значение внутри него.Просто позвоните textContent на <someTag> сам , и вы получите весь комбинированный текстовый контент: '\n Hello World\n'.(Вы можете .trim() это вам нравится.)

0 голосов
/ 28 сентября 2010

Если вы используете Firefox, возможно, , это - это проблема, с которой вы столкнулись. Поведение выглядит очень похоже ... Следующее может помочь:

xmldoc.getElementsByTagName("someTag")[0].childNodes[1].textContent;
...