2

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に送信されます。

  1. <?xml version="1.0"?><test1/>
  2. <?xml version="1.0"?><test2/>

私は以下を含む1つのPOSTを期待します:

<?xml version="1.0"?><tests><test1/><test2/></tests>

私は何が間違っているのですか?

編集:これを機能させることができなかったので、XMLを文字列で構築しようとしています。XML値をエスケープするために使用dojox.html.entities.encodeしていますが、これは正しい方法ではないようです。たとえば、文字äはに変換され&auml;ます。IEは、XMLを含むファイルを認識しません&auml;(xmlタグでさまざまなエンコーディングを試しました)。代わりに使用&#228;すると、IEはそれをXMLとして認識します。dojoでXMLをエスケープするにはどうすればよいですか?

EDIT2:私はこの単純なエンコーディングを使用することになりました:

javascriptでxmlエンティティをエスケープする方法は?

ただし、XMLで不正な文字は削除されません。もちろん、それらを削除するコードスニペットもありますが、Dojoにそれを実行するユーティリティがない場合は驚きます。

ありがとう、

  • パヌ
4

0 に答える 0