Встака знаков <> в текст element'a из Java DOM

198
24 апреля 2018, 04:26

При попытке вызвать setTextContent() со строкой, содержащей < или > в итоговый файл записывается &lt или &rt. Что делать, и как записать эти знаки в содержимое элемента?

Answer 1

Как я уже писал в комментарии, в соответствии со стандартом, символ < должен встречаться только в начале тега, а символ > в конце, во всех других случаях они должны быть преобразованы в escape-последовательности &lt; и &gt;. Появление этих символов в неэкранированном виде на месте текстовых узлов сделает документ невалидным и, скорее всего, сломает его отображение в бразуерах. Единственное исключение - это текстовые узлы обёрнутые в секцию CDATA:

someNode.appendChild(doc.createCDATASection("<>"));

Но, на сколько я понял, такой вариант вас тоже не устроит. Возможно, вас интересует что-то такое:

Node disableEscaping = doc.createProcessingInstruction(StreamResult.PI_DISABLE_OUTPUT_ESCAPING, "<>");
Node enableEscaping = doc.createProcessingInstruction(StreamResult.PI_ENABLE_OUTPUT_ESCAPING, "<>");
someNode.appendChild(disableEscaping);
someNode.setTextContent("> <");
someNode.appendChild(enableEscaping);
READ ALSO
Что нужно что бы развернуть проект на OpenShift?

Что нужно что бы развернуть проект на OpenShift?

Я залил проект в его стандартном состоянии, но на OpenShift выдало ошибкуМожет нужны какие-то дополнительные действия? На локальном сервере все...

150
Создаю десктопное приложение на JavaFX по считыванию RFID. Подскажите как можно добавлять label во время работы программы?

Создаю десктопное приложение на JavaFX по считыванию RFID. Подскажите как можно добавлять label во время работы программы?

Нужно написать десктопное приложение для считывания rfid, с запуском reader никаких проблем нет, то когда readeropen() я при обнаружении могу получить...

177
Лучшее средство для написания игр под Android

Лучшее средство для написания игр под Android

Собираюсь писать код под AndroidЗнаю язык Java

157
Java. Работа с потоками

Java. Работа с потоками

Всем привет, Понимаю что вопрос может банален но все жеНужно создать поток А и В

154