使用php将xml转换为csv使用此类型的结构

时间:2017-07-14 08:06:26

标签: php xml csv

我需要通过列(;)将此xml结构解析为csv分隔数据但是它不起作用,只需创建没有数据的标题



    ----<ArticuloD>
    <codigo>10202</codigo>
    <familia>VARIOS</familia>
<subfamilia>LIBROS</subfamilia>
<subfamilia2>LIBROS</subfamilia2>
<subfamilia3>LIBROS</subfamilia3>
<subfamilia4>LIBROS</subfamilia4>
<ean>9788425351501</ean><talla>ST</talla>
    ----</ArticuloD>
    ---<ArticuloD>
&#13;
&#13;
&#13;

我的PHP代码:

&#13;
&#13;
<?php


    $file='ListaArticulosD-507.xml';


    if (file_exists($file)) {
        $xml = simplexml_load_file($file);
        $f = fopen('user.csv', 'w');
        // array to hold the field names
        $headers = array(); 
        // loop through the first set of fields to get names
       foreach ($xml->ArticulosD->ArticuloD->children() as $field) {  
            // put the field name into array
            $headers[] = $field->getName(); 
        }
        // print headers to CSV
        fputcsv($f, $headers, ';', '"');

        foreach ($xml->ArticuloD->children() as $users) {
            fputcsv($f, get_object_vars($users), ';', '"');
        }
        fclose($f);
    }
        ?>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

如果您将其更改为...,那么您的上一个foreach循环太深入到结构中了。

foreach ($xml->ArticuloD as $users) {

然后我得到的输出是

codigo;familia;subfamilia;subfamilia2;subfamilia3;subfamilia4;ean;talla
10202;VARIOS;LIBROS;LIBROS;LIBROS;LIBROS;9788425351501;ST

有时候使用print_r()来获取这样的数据时,可以提示您在每个点上使用的内容。只需记住在发送任何代码之前将它们取出来!