2011-12-03 3 views
0

.txt形式のファイルはほとんどありません(これらのファイルは、フォルダに保存されるか、実行後にデスクトップから開くかのいずれかです)。PHPを使用してテキストファイルをXMLに変換する

これらのファイルを取得してXML形式で保存し、次にXSLTで動的に表示できるアプリケーションをPHPで構築したいと考えています。

私にこれを可能にする方法はありますか?

これは今まで私が持っているコードです:

$fp = fopen('optim.txt', 'r'); 

$xml = new XMLWriter; 
$xml->openURI('php://output'); 
$xml->setIndent(true); // makes output cleaner 

$xml->startElement('qualité'); 
while ($line = fgetcsv($fp)) { 

    $xml->startElement('qualité'); 
    $xml->writeElement('critere', $line[0]); 
    $xml->writeElement('poids', $line[1]); 
    $xml->writeElement('Vm', $line[2]); 
    $xml->writeElement('SV', $line[3]); 
    $xml->writeElement('critere', $line[4]); 
    $xml->writeElement('poids', $line[5]); 
    $xml->writeElement('Vm', $line[6]); 
    $xml->writeElement('SV', $line[7]); 
    $xml->writeElement('resultat', $line[8]); 
    $xml->endElement(); 
} 
$xml->endElement(); 

は、しかし何の結果はありません、誰もが私が間違っているつもりですどこ私は見つけることができますか?

答えて

0

問題は、あなたの行である: -

$xml->openURI('php://output'); 

これは、私はあなたが何をしたいかだと思うクライアントのブラウザに直接出力を送信します。ただし、これを反映させるために正しいヘッダーを設定する必要があります。

はあなたのコード

header("Content-Type: text/xml"); 

に次の行を追加すると、ブラウザに直接出力が表示されます。その行がどこに行くかは実際問題ではありませんが、コンテンツがブラウザに送信される前に置かれている必要があります。$fp = fopen('optim.txt', 'r');

また、最も外側の要素の名前をwhatever複数の「qualité」は、同じ名前の親要素と子要素を持たないようになっています。

また、$xml->setIndent(true);の後にこの行を追加してください$xml->startDocument();そうでなければあなたのXMLは有効ではありません。もう少し後

(私はなぜ知らない)デフォルトのタイムゾーンが設定されていることが不可欠であると思われるので、あなたのスクリプトの先頭に以下を追加掘り: -

date_default_timezone_set("GMT"); //or whatever your default timezone is. 

どのあなたのコードは次のようになります。意味: -

date_default_timezone_set("GMT"); //or whatever your default timezone is. 
header("Content-Type: text/xml"); //Added as part of answer 
$fp = fopen('optim.txt', 'r'); 

$xml = new XMLWriter; 
$xml->openURI('php://output'); 
$xml->startDocument(); // added as part of answer 
$xml->setIndent(true); // makes output cleaner 

$xml->startElement('qualités'); //changed as part of answer 
while ($line = fgetcsv($fp)) { 

    $xml->startElement('qualité'); 
    $xml->writeElement('critere', $line[0]); 
    $xml->writeElement('poids', $line[1]); 
    $xml->writeElement('Vm', $line[2]); 
    $xml->writeElement('SV', $line[3]); 
    $xml->writeElement('critere', $line[4]); 
    $xml->writeElement('poids', $line[5]); 
    $xml->writeElement('Vm', $line[6]); 
    $xml->writeElement('SV', $line[7]); 
    $xml->writeElement('resultat', $line[8]); 
    $xml->endElement(); 
} 
$xml->endElement(); 
+0

私はそれを試してみたがありません結果:/ – olla

+0

私はあなたがいない結果で何を意味するかわからないんだけど、あなたは少し明確にすることができます。ファイルに最初に書き込んでみて、実際の出力が何であるかを確認してください。あなたが正しいことをしたら、あなたは再び出力に送ることができます。 – vascowhite

+0

私はコードを実行するとき...私はどんな結果.. havn'tあなたはメール[email protected] ....私に連絡することができます....たくさんのthnks :) – olla

関連する問題