2016-09-11 13 views
1

を生成し、保存します。私はボタンをクリックするとこれは私がやろうとしています何であるXMLファイル

、XML構造が作成され、保存-としてダイアログボックス それをどこに保存するようにユーザーに尋ねるように見えます。

一般的にはすべて問題ありません。

問題は次のとおりです。保存されたファイルにXML構造AND js、htmlコードが含まれています。私は、問題は前にエコーヘッダーまたはものについて可能性が実現するん

/*a lot of code before */ 

$domtree = new DOMDocument('1.0', 'UTF-8'); 
$domtree->formatOutput = true; 
$xmlRoot = $domtree->createElement("xml"); 
$xmlRoot = $domtree->appendChild($xmlRoot); 
//create and append other elements 

//save it to a file using a dialog box 
$file_name = "myFile.xml"; 
header('Content-Disposition: attachment;filename=' . $file_name); 
header('Content-Type: text/xml'); 
echo $domtree->saveXML(); 

/* a lot of code after */ 

これは次のように私のコードがどのように見えるかです。 しかし、私はそれを修正する方法がわかりません。

同様の状況でも解決策が見つかりましたが、ソースファイルにはXMLファイルを生成して保存するコードしか含まれていないようです。

私の場合、もっとコードが必要です。

答えて

0

問題を修正:

私はエコーの後、エコーの前に

ob_clean(); 
flush(); 

exit; 

を追加しました。

今のコードは次のようになります。

/*a lot of code before */ 

$domtree = new DOMDocument('1.0', 'UTF-8'); 
$domtree->formatOutput = true; 
$xmlRoot = $domtree->createElement("xml"); 
$xmlRoot = $domtree->appendChild($xmlRoot); 
//create and append other elements 

//save it to a file using a dialog box 
$file_name = "myFile.xml"; 
header('Content-Disposition: attachment;filename=' . $file_name); 
header('Content-Type: text/xml'); 
ob_clean(); 
flush(); 
echo $domtree->saveXML(); 
exit; 

/* a lot of code after */ 
0

あなたのコードは、私にはOKになります(それをテストし、それが有効になりますと、正しく実行されなかった)、そして私も何が$であることを前提としていxmlRootも有効です。

XMLファイルのダウンロードリンクをどのように実装していますか?それは上のコードを含んでいるPHPファイルへのリンクですか?

XMLをファイルとしてダウンロードするには、コードを「XMLファイルジェネレータ」として実行する必要があります。つまり、「ジェネレータ」がファイルを作成し、ダウンロード可能な形式でブラウザ(ブラウザの最後にダウンロードプロンプトが表示されます)。古典的な方法は次のように動作

ジェネレータは、次の形式のヘッダを返す:

header('Content-Disposition: attachment;filename=myFile.xml'); 
header('Content-Type: text/xml'); 

そしてXML出力:

echo $domtree->saveXML(); 

ことが重要ですヘッダーの前には何も(空白でなくても)何も印刷されません。

次に、ダウンロードリンクは、次のようになります。エンドユーザーがそれをクリックすると、彼は自分のコンピュータにファイルを保存したい場合

<a href="http://api.my-domain.com/download-as-xml/document/123">Download as XML</a> 

、彼は(一部のブラウザがあるのプロンプトが表示されます

あなたはajaxでこれを行うことを検討しているなら、全く別の話です。

少し助けてくれることを願っています!

+0

私は古典的な方法を念頭に置いてコードを書いた。問題は、保存されたファイルには、必要なXML構造だけでなく、js、htmlコードも含まれていたということでした。 ob_cleanを追加し、flushとexitで問題を修正しました。しかし、私にはまだ何が起こったのか不明です。ご協力ありがとうございます! – Newbie

関連する問題