2011-01-31 67 views
7

想知道是否有人能指示我一些提示/腳本的方向,這將幫助我使用PHP從原始CSV文件創建XML。PHP腳本將.CSV文件轉換爲.XML

乾杯

+5

我可以。 `*指向谷歌的大方向與「轉換.CSV到.XML」的請求*` – 2011-01-31 15:47:50

+0

是的「軟件」,它真的很方便「滾眼睛」 – StuBlackett 2011-01-31 15:48:46

+1

'只要谷歌它'哎呀,如果是那麼容易唐你認爲斯圖已經做到了嗎? – SC1988 2015-05-22 16:33:34

回答

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); 
5

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

如果這將是一個普通的過程,而不是一次性的事情,可能是理想的只是自己解析CSV和輸出的XML:

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

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

查找PHP的filestring功能。

6

上面給出的代碼創建一個XML文檔,但不會將其存儲在任何物理設備上。所以用

替換 echo $doc->saveXML();
$strxml = $doc->saveXML(); 
$handle = fopen($outputFilename, "w"); 
fwrite($handle, $strxml); 
fclose($handle);