2012-04-13 24 views
0

我有下面的代碼。語句1加載平均大小(〜300-400KB)的xml文件並將內容存儲到字符串變量(xmlContent)中。現在,語句2將把jsp變量xmlContent的 值賦給javascript變量xmlText。語句3將嘗試在javascript中創建一個XMLDocument對象(將字符串裝載爲xml文檔,以便可以通過DOM方法進行解析)。加載xml作爲字符串,並在jsp和javascript中使用

我必須說,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

如果您的XML包含換行符(LF/CRLF),您需要在Java代碼中將它們移除或轉義,然後將它們傳遞給Javascript代碼。請記住,在JavaScript方面,就像輸入一個文字字符串。如果您的XML包含換行符,就像將您的文字字符串分成多行。

更安全的賭注是使用反斜槓換行符來搜索和替換XML中的新行以避免Javascript中的換行符,並有效地提供多行JavaScript字符串。如果你的XML中有任何你想保留的換行符的CDATA部分,這也可以正常工作。有些代碼:

xmlContent = xmlContent.replace("\n", "\\\n").replace("\r\n", "\\\r\n"); 
0

如果您知道XML模式(XSD,它不會改變),我建議你使用JAXB。您可以實現一個處理XML文件的servlet,並將一個bean返回給JSP。

相關問題