Да, и нет, в зависимости от вашего парсера. Причина этого в том, что предполагается, что все текстовые узлы в XML заменены на <и> их htmlentity()
аналогами, а все другие специальные символы заменены на htmlspecialchars()
. Я вполне уверен, что он создает новый узел с тегом HTML в качестве имени.
Единственные два решения для этого - сохранить данные XML в строку, использовать регулярное выражение, чтобы извлечь теги HTML (ну, все символы <и> в этом отношении) и заменить их правильными значениями, которые я отметил выше, прежде чем передать его парсеру (parser.parseFromString()
в javascript, учитывая, что 'parser' является парсером DOM). Другой заключается в том, чтобы взять узел, а затем получить набор дочерних узлов всего узла, используя рекурсивный цикл, а затем объединить их имена и содержимое. Второй метод - это больше программирования и больше обработки, и я предлагаю простое исправление регулярных выражений и замену символов.
Или, вы можете прочитать о CDATA здесь и вместо этого использовать теги, поместив весь контент в тег ![CDATA[]
, но это если вы создаете этот XML-файл. Вам следует уведомить веб-мастера сайта, с которого вы получили XML, о том, что XML создан неправильно, и теги необходимо экранировать с помощью тега ![CDATA[]
или заменить <и> их аналогами htmlentity()
. Я полагаю, что вы также можете использовать регулярные выражения, чтобы поместить HTML-код в тег ![CDATA[]
, но это, вероятно, медленнее и менее эффективно, чем замена тегов <и>.