2012-04-13 26 views
0

以下のコードがあります。文1は、平均サイズ(〜300-400KB)のXMLファイルをロードし、その内容を文字列変数(xmlContent)に格納します。ステートメント2は、jsp変数xmlContentの の値をjavascript変数xmlTextに設定します。ステートメント3は、javascriptでXMLDocumentオブジェクトを作成しようとします(DOMメソッドを通じて解析できるように、文字列をxmlドキュメントとしてロードします)。xmlを文字列としてロードし、jspとjavascriptで使用する

xmlファイルには一重引用符と二重引用符の両方が含まれており、&***;などのエンティティも含まれている必要があります。今、なぜ3番目の文が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)が含まれている場合は、それらを削除するか、JavaScriptコードに渡す前に、Javaコードでそれらをエスケープする必要があります。 Javascript側では、リテラル文字列を入力するようなものです。 XMLに改行が含まれている場合は、リテラル文字列を複数の行に分割するようなものです。

あなたのXMLの改行をバックスラッシュ改行で置き換えて、改行をJavascriptでエスケープし、効果的に複数行のJavascript文字列を提供することです。これは、保存したい改行でXMLにCDATAセクションがある場合にも正しく動作します。いくつかは、コード:

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

あなたがXMLスキーマを知っている(XSDを、そして、それは変更されません)私はあなたがJAXBを使用することをお勧めします。 XMLファイルを処理し、BeanをJSPに返すサーブレットを実装することができます。

関連する問題