【问题标题】:PHP Script to convert .CSV files to .XML将 .CSV 文件转换为 .XML 的 PHP 脚本
【发布时间】:2011-06-18 16:14:27
【问题描述】:

只是想知道是否有人可以指出一些提示/脚本的方向,这将帮助我使用 PHP 从原始 CSV 文件创建 XML。

干杯

【问题讨论】:

  • 我可以。 *pointing in the google general direction with "convert .CSV to .XML" request*
  • 是的,做它的“软件”真的很方便“Roll Eyes”
  • '谷歌一下'好吧,如果这很容易,你不认为斯图已经做到了吗?

标签: php xml csv


【解决方案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-&gt;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 的 filestring 函数。

    【讨论】:

    • 干杯本。有用的答案!!我去看看。也在 PHP.net 网站上查看 fgetcsv。
    猜你喜欢
    • 1970-01-01
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    • 2018-01-07
    • 2014-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多