2011-01-31 9 views
7

誰かがPHPを使って元のCSVファイルからXMLを作成するのに役立つヒント/スクリプトの指示で私を指摘できるかどうかは疑問です。.CSVファイルを.XMLに変換するPHPスクリプト

乾杯

+5

に置き換えてください。 '* Googleの一般的な方向を指して" .CSVを.XMLに変換する "という要求で* –

+0

うん"それは本当に便利なソフトウェア "ロールの目" – StuBlackett

+1

"ちょうどグーグルそれは簡単なドンだったらスチュがすでにそれをやったと思う? – SC1988

答えて

15

これはかなり簡単です。fgetcsvを見てcsvファイルを読み込み、次にDomDocumentを使ってxmlファイルを書きます。このバージョンでは、XML文書のキーとしてファイルのヘッダーが使用されます。

<?php 
error_reporting(E_ALL | E_STRICT); 
ini_set('display_errors', true); 
ini_set('auto_detect_line_endings', true); 

$inputFilename = 'input.csv'; 
$outputFilename = 'output.xml'; 

// Open csv to read 
$inputFile = fopen($inputFilename, 'rt'); 

// Get the headers of the file 
$headers = fgetcsv($inputFile); 

// Create a new dom document with pretty formatting 
$doc = new DomDocument(); 
$doc->formatOutput = true; 

// Add a root node to the document 
$root = $doc->createElement('rows'); 
$root = $doc->appendChild($root); 

// Loop through each row creating a <row> node with the correct data 
while (($row = fgetcsv($inputFile)) !== FALSE) 
{ 
    $container = $doc->createElement('row'); 
    foreach($headers as $i => $header) 
    { 
     $child = $doc->createElement($header); 
     $child = $container->appendChild($child); 
     $value = $doc->createTextNode($row[$i]); 
     $value = $child->appendChild($value); 
    } 

    $root->appendChild($container); 
} 

$strxml = $doc->saveXML(); 
$handle = fopen($outputFilename, "w"); 
fwrite($handle, $strxml); 
fclose($handle); 
+0

こんにちはマイケル私はこれが古い投稿であることを知っていますが、これに気づくことを願っています。どのようにしてこの同じ機能を自分の中に入れ子にすることができますか? 在庫管理システムでXML> CSV> XML> CSV(2つの間の変換)が必要なクライアントがあります。顧客から注文されたアイテムは、XMLからCSVに変換されるときにそのように格納されます。item_name | item_price | item_quantity私がしているのは、CSV> XMLがこの情報を格納する一時csvを作成することです。 私がしたいことは、このスクリプトがその一時ファイルで行うことです。しかし何らかの理由で、それは必要以上にループしようとし続けます。できれば私にPMしてください – SC1988

5

There are a number of sites out there that will do it for you

これは、通常のプロセスではなく、1回限りのものであることを行っている場合は、それだけでXMLを自分でCSV出力を解析する理想的なことがあります

$csv = file("path/to/csv.csv"); 

foreach($csv as $line) 
{ 
    $data = explode(",", $line); 
    echo "<xmltag>".$data[0]."</xmltag>"; 
    //etc... 
} 

は、PHPのfilestring機能を検索します。

+0

乾杯。役に立つ答え!私は一見を持っていきます。 PHP.netサイトでもfgetcsvを見てきました。 – StuBlackett

6

上記のコードはXMLドキュメントを作成しますが、物理デバイスには格納しません。だからecho $doc->saveXML();