0

我有下面的代码。语句 1 加载一个平均大小 (~300-400KB) 的 xml 文件并将内容存储到一个字符串变量 (xmlContent) 中。现在语句 2 会将 jsp 变量 xmlContent 的值放到 javascript 变量 xmlText 中。语句 3 将尝试在 javascript 中创建一个 XMLDocument 对象(将字符串加载为 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>
4

2 回答 2

0

如果您的 XML 包含换行符(LF / CRLF),您需要在将其传递给 Javascript 代码之前在 Java 代码中删除它们或对其进行转义。请记住,在 Javascript 方面,这就像输入文字字符串。如果您的 XML 包含换行符,这就像将您的文字字符串分成多行。

更安全的选择是使用反斜杠换行符搜索和替换 XML 中的换行符,以转义 Javascript 中的换行符并有效地提供多行 Javascript 字符串。如果您的 XML 中有任何带有您希望保留的换行符的 CDATA 部分,这也将正常工作。一些代码:

xmlContent = xmlContent.replace("\n", "\\\n").replace("\r\n", "\\\r\n");
于 2012-04-13T12:53:48.103 回答
0

如果您知道 XML 模式(XSD,并且它不会改变),我建议您使用JAXB。您可以实现一个处理 XML 文件并将 bean 返回给 JSP 的 servlet。

于 2012-04-13T13:33:21.953 回答