Загрузка xml в виде строки и использование в jsp и javascript

У меня есть коды ниже. Оператор 1 загружает xml-файл среднего размера (~ 300-400 КБ) и сохраняет содержимое в строковую переменную (xmlContent). Теперь оператор 2 поместит значение переменной jsp xmlContent в переменную xmlText javascript. Оператор 3 попытается создать объект XMLDocument в javascript (загрузить строку как XML-документ, чтобы его можно было проанализировать с помощью методов DOM).

Я должен сказать, что файл xml содержит внутри себя как одинарные, так и двойные кавычки, а также содержит такие объекты, как &***;. Теперь, почему третий оператор возвращает null? может кто-нибудь объяснить?

Может ли кто-нибудь сказать мне какой-нибудь лучший способ передачи строковых данных xml, например, путем кодирования/декодирования или экранирования?

Спасибо.

<%
 String xmlContent = FileReader.readFile("/xml/books.xml");
%>
<script type="text/javascript">
 var xmlText = ' <% =xmlContent %> ';
 new DOMParser().parseFromString(xmlText, "text/xml");
 //I know that it will not work in IE
</script>

person Ranjan Sarma    schedule 13.04.2012    source источник


Ответы (2)


Если ваш XML содержит символы новой строки (LF / CRLF), вам нужно будет удалить их или экранировать их в коде Java перед передачей в код Javascript. Помните, что на стороне Javascript это похоже на ввод буквальной строки. Если ваш XML содержит новые строки, это похоже на разбиение вашей буквальной строки на несколько строк.

Безопаснее искать и заменять новые строки в вашем XML с помощью обратной косой черты-новой строки, чтобы избежать новых строк в Javascript и эффективно предоставить многострочную строку Javascript. Это также будет работать правильно, если в вашем XML есть какие-либо разделы CDATA с новыми строками, которые вы хотите сохранить. Некоторый код:

xmlContent = xmlContent.replace("\n", "\\\n").replace("\r\n", "\\\r\n");
person vagelis    schedule 13.04.2012

Если вы знаете XML-схему (XSD, и она не меняется), я предлагаю вам использовать JAXB. Вы можете реализовать сервлет, который обрабатывает файл XML и возвращает bean-компонент в JSP.

person m c    schedule 13.04.2012