将 .CSV 文件转换为 .XML 的 PHP 脚本
Posted
技术标签:
【中文标题】将 .CSV 文件转换为 .XML 的 PHP 脚本【英文标题】:PHP Script to convert .CSV files to .XML 【发布时间】:2011-06-18 16:14:27 【问题描述】:只是想知道是否有人可以指出一些提示/脚本的方向,这将帮助我使用 php 从原始 CSV 文件创建 XML。
干杯
【问题讨论】:
我可以。*pointing in the google general direction with "convert .CSV to .XML" request*
是的,做它的“软件”真的很方便“Roll Eyes”
'谷歌一下'好吧,如果这很容易,你不认为斯图已经做到了吗?
【参考方案1】:
很抱歉提出一个旧线程,但我尝试了这个脚本,但我得到了一个 DOM 异常错误
我们的 CSV 文件的标题是 display_name office_number mobile_number,我收到的错误是 DOMDocument->createElement('\xEF\xBB\xBFdisplay_name') #1 main
【讨论】:
这不是答案。您应该尝试提出一个新问题。提供代码、您所做的任何更改并描述您面临的问题。【参考方案2】:这很容易做到,只需查看 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);
【讨论】:
嗨,迈克尔,我知道这是一篇旧帖子,但我希望你能注意到这一点。我怎样才能将这个相同的功能嵌套在它自身中?我所拥有的是希望 XML > CSV > XML > CSV(两者之间的转换)用于他们的库存系统的客户。当从 XML 转换为 CSV 时,他们的客户订购的商品将按原样存储:item_name |商品价格 | item_quantity 我所做的是让 CSV > XML 创建一个临时 csv 来存储此信息。我想要做的只是这个脚本对那个临时文件所做的事情。但由于某种原因,它一直试图循环比它应该的更多。可以的话请私信我【参考方案3】:上面给出的代码创建了一个 XML 文档,但没有将它存储在任何物理设备上。所以用
替换echo $doc->saveXML();
$strxml = $doc->saveXML();
$handle = fopen($outputFilename, "w");
fwrite($handle, $strxml);
fclose($handle);
【讨论】:
【参考方案4】: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 的 file
和 string
函数。
【讨论】:
干杯本。有用的答案!!我去看看。也在 PHP.net 网站上查看 fgetcsv。以上是关于将 .CSV 文件转换为 .XML 的 PHP 脚本的主要内容,如果未能解决你的问题,请参考以下文章
python [xml文件到voc的csv文件]将voc标签转换为xml格式为csv格式#python #csv #xml