我有以下代码。语句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>
答案 0 :(得分:0)
如果您的XML包含换行符(LF / CRLF),则需要先将它们删除或在Java代码中将其转义,然后再将其传递给Javascript代码。请记住,在Javascript方面,它就像键入一个文字字符串。如果您的XML包含换行符,则就像将文字字符串拆分为多行一样。
更安全的选择是使用反斜杠换行来搜索和替换XML中的换行,以逃避Javascript中的换行并有效地提供多行Javascript字符串。如果您的XML中有任何CDATA部分,并且您希望保留换行符,这也将正常工作。一些代码:
xmlContent = xmlContent.replace("\n", "\\\n").replace("\r\n", "\\\r\n");
答案 1 :(得分:0)
如果你知道XML架构(XSD,它没有改变),我建议你使用JAXB。您可以实现一个servlet来处理XML文件并将bean返回给JSP。