[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: про nodeValue
program90
Есть такой текст, который приходит с сервера:
<text>&lt;java&gt;corben&lt;/java&gt;</text>
Это часть xml.
После разбора responseXML.documentElement я получаю этот тег в переменную child.
Чтобы получить текст, я написал var text = child.firstChild.nodeValue
Но в результате получается что в text хранится <java>corben</java>, а не &lt;java&gt;corben&lt;/java&gt;
Подскажите как сделать так, чтобы получился второй вариант? Т.е. где ошибка? Или придется заменять как в php спецсимволы функцией?



Спустя 5 часов, 29 минут, 3 секунды (13.01.2011 - 09:18) ApuktaChehov написал(а):
А где вы смотрите результат? в браузере или в исходном коде, который браузер отдает? Вообще этb две строки эквивалентны, просто в первой символы <> заменены их HTML сущности, а во второй нет.

&lt;java&gt;corben&lt;/java&gt
<java>corben</java>

Спустя 1 час, 57 минут, 12 секунд (13.01.2011 - 11:15) program90 написал(а):
Так я знаю) Смотрю естесствено в коде страницы. где должно быть &lt; а не <. Потому что браузер глотает скобки и туда можно встраивать теги. Наверно можно заменить с помощью регулярных выражений, но лучше если это можно сделать просто так. Непонятно почему так получается - почему происходит преобразование при обращении к nodeValue.
Javascript.ru смотрю - чегото там ничего нету...

Спустя 22 минуты, 3 секунды (13.01.2011 - 11:37) ApuktaChehov написал(а):
Если мне память не изменяет, у меня было подобное однажды. Я, вроде бы, код ajax-ом грузил и такая же ситуация была. Я так и не понял почему.

Ну.. может сейчас батьки JS приду и все нам расскажут wink.gif

Спустя 22 минуты, 50 секунд (13.01.2011 - 12:00) Michael написал(а):
Сложно так гадать что у тебя реально в DOM. Логируй в файрбаг.
Кстати nodeValue это для текстовых узлов только.
innerHTML не пробовал?

Спустя 5 минут, 47 секунд (13.01.2011 - 12:06) linker написал(а):
У XML нет такого проперти innerHTML. Есть nodeValue, textContent и еще что-то. Может меняться в зависимости от браузера. Не путать XML с HTML.

Спустя 39 минут, 56 секунд (13.01.2011 - 12:46) Michael написал(а):
ага, я че то подумал что он в дом вставил. Вообще для разбора яваскриптом лучше json.
но попробуй:
firstChild.data

Спустя 1 час, 3 минуты, 51 секунда (13.01.2011 - 13:49) program90 написал(а):
Попробовал,
textContent и data - дают то же самое.....

Спустя 1 час, 5 минут, 28 секунд (13.01.2011 - 14:55) linker написал(а):
Зря паришься, оно так и будет. &lt;&gt; - это просто просто представление символов <>. При чтении &lt;&gt; из XML ессесно получаем ожидаемое <>

Спустя 58 минут, 27 секунд (13.01.2011 - 15:53) program90 написал(а):
ясно....
а не будет ли опасным если тогда преобразовывать теги в коде javascript? т.е. написать функцию вроде htmlspecialchars, только на сторон клиента

Спустя 17 минут, 44 секунды (13.01.2011 - 16:11) Michael написал(а):
Тебе надо в ответе формировать вместо например:
<title>&lt;code&gt;Заголовок CC&lt;/code&gt;</title>
следующее:
<title>&amp;lt;code&amp;gt;Заголовок CC&amp;lt;/code&amp;gt;</title>
htmlspecialchars(htmlspecialchars('<>'));

тогда nodeValue нормально покажет.

Спустя 49 минут, 58 секунд (13.01.2011 - 17:01) Michael написал(а):
Цитата (linker @ 13.01.2011 - 13:55)
Зря паришься, оно так и будет. &lt;&gt; - это просто просто представление символов <>. При чтении &lt;&gt; из XML ессесно получаем ожидаемое <>

вот все равно как то не совсем очевидно получается.
Логирую элемент:
titlearr=xmlRoot.getElementsByTagName('title');
console.log(titlearr.item(2));

Получаю:
user posted image

слева показывает что имеем в нем(то что и передавали), а справа - уже св-ва этого объекта js(firstChild, lastChild, ...) где получается как будто выполнен для них innerHTML.

Спустя 6 часов, 56 минут, 51 секунда (13.01.2011 - 23:58) program90 написал(а):
Michael
Спасибо). Теперь работает.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.