0

XML を XSLT で変換する JavaScript コードがいくつかあります。私は今、ユーザーがその新しい XML を保存できるようにしたいと考えています (プロンプトを表示するか、新しい XML をファイルなどとしてスローして、ユーザーが保存できるようにします。誰もそれを行う方法を知っていますか?

var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
xmldoc.async = false;
xmldoc.loadXML(responseText); // responseText is xml returned from ajax call
//apply the xslt
var xsldoc = new ActiveXObject("Microsoft.XMLDOM");
xsldoc.async = false;
xsldoc.load("../xslt/ExtraWorkRequest.xslt");
var content = xmldoc.transformNode(xsldoc);

ユーザーに XML (コンテンツ) をファイルとして保存してもらうにはどうすればよいですか?

4

4 に答える 4

1

デフォルトでは、できません。セキュリティ上の理由から、ブラウザはローカルディスクにアクセスすることは想定されていません。

ただし、ユーザーにセキュリティ設定の変更を依頼できる場合(そして依頼しないでください)、使用することFileSystemObjectも、Microsoft.XMLDOM.Save方法を使用することもできます。

于 2010-01-18T20:31:55.330 に答える
1

デフォルトのセキュリティ設定では、100%クライアント側のJavaScriptでは実行できません。サーバー側のロジックを実装する必要があります。あなたの場合、サーバー側でもXML変換を行うことができます。

http://www.bigresource.com/Tracker/Track-javascripts-ijfTJlI9/

http://support.microsoft.com/kb/q260519/

于 2010-01-18T20:32:43.583 に答える
1

のメディア タイプを持つ data: URI を作成できますapplication/octet-stream

function download (data, charset) {
  if (!charset) {
    charset = document.characterSet;
  }
  location.href = ["data:application/octet-stream;charset=",
                   charset, ",", encodeURIComponent(data)
                  ].join("");
}

IE を除くすべてのブラウザーがデータをサポートしています: URI。IE8はそれらをサポートしていると思いますが、画像のみです。IE の場合、回避策として、データをサーバー (を含むdocument.characterSet) に送信してから、次のようなヘッダーを持つページを読み込むことができます。

Content-Type: application/xml; charset={document.characterSet}
Content-Disposition: attachment

ファイルにも名前を付けたい場合は、Content-Disposition: attachment; filename=....

また、これを機能させるには、最初に XML を文字列に変換する必要があります。

于 2010-01-18T20:40:32.693 に答える
0

私はブログのコードスニペットを使用してこれを行います(ユーザーは保存ボタンをクリックすると、スニペットがデフォルトのテキストエディターに表示され、微調整したり、アプリにコピーしたりできます)。

これは、すべてのテキストデータを非表示フィールド内に配置し、それを非常に単純なサーバー側のHTTPハンドラーに送信することで機能します。ハンドラーは、非表示のフィールド値を取得し、適切なcontent-dispositionヘッダーを使用して応答に吐き出し、ユーザーにダウンロードのオープン/保存プロンプトを表示します。

これが私がそれを機能させる唯一の方法です。

于 2010-01-18T22:20:34.507 に答える