XPages Extension Library DataGrid(<xe:djxDataGrid>
)のコンテンツをXMLとして取得する必要があります。
クライアント側のJavaSciptでは、すべての行をループし、値を取得し、dojox.data.XmlStoreを使用してXMLを構築しています。
問題は、XMLを保存しようとすると、タグを追加した回数だけPOSTが実行され、各POSTに<?xml version="1.0"?>
1つのタグが含まれていることです。
単純なXMLファイルを作成しようとする単純なサンプルコードを次に示します。
var xml_store = new dojox.data.XmlStore({url: "backend_save_to_file.xsp", rootItem: "tests"});
xml_store.newItem({tagName: "test1"}, "tests");
xml_store.newItem({tagName: "test2"}, "tests");
xml_store.save();
このJavaScriptを実行すると、次の内容の2つのHTTPPOSTがbackend_save_to_file.xspに送信されます。
<?xml version="1.0"?><test1/>
<?xml version="1.0"?><test2/>
私は以下を含む1つのPOSTを期待します:
<?xml version="1.0"?><tests><test1/><test2/></tests>
私は何が間違っているのですか?
編集:これを機能させることができなかったので、XMLを文字列で構築しようとしています。XML値をエスケープするために使用dojox.html.entities.encode
していますが、これは正しい方法ではないようです。たとえば、文字äはに変換されä
ます。IEは、XMLを含むファイルを認識しませんä
(xmlタグでさまざまなエンコーディングを試しました)。代わりに使用ä
すると、IEはそれをXMLとして認識します。dojoでXMLをエスケープするにはどうすればよいですか?
EDIT2:私はこの単純なエンコーディングを使用することになりました:
javascriptでxmlエンティティをエスケープする方法は?
ただし、XMLで不正な文字は削除されません。もちろん、それらを削除するコードスニペットもありますが、Dojoにそれを実行するユーティリティがない場合は驚きます。
ありがとう、
- パヌ