使用 PHP 的 CSV2XML - 需要添加一行来输出 XML

问题描述 投票:0回答:1

我在网上找到了以下代码,它对我来说效果很好。 我需要将 CSV 文件转换为 XML 文件。 我唯一需要更改的是使代码输出相同的 XML 结构,添加 rss 版本的行,正如我在下面的示例中提到的那样。

<?php
     // Map CSV file to array
      $rows = array_map('str_getcsv', file('data.csv'));
      $header = array_shift($rows);
      $data = array();
       foreach ($rows as $row)
      {
        $data[] = array_combine($header, $row);
      }
     // Process Data if need be
       foreach($data AS $key => $val)
     {
        // Processing here
      }
      //Creates XML string and XML document using the DOM 
      $xml = new DomDocument('1.0', 'UTF-8');

      //Add root node
      $root = $xml->createElement('channel');
      $xml->appendChild($root);

      // Add child nodes
      foreach($data AS $key => $val) 
  { 
$entry = $xml->createElement('item');
$root->appendChild($entry);

foreach($val AS $field_name => $field_value) 
{   
    $field_name = preg_replace("/[^A-Za-z0-9]/", '', $field_name); // preg_replace has the allowed characters
    $name = $entry->appendChild($xml->createElement($field_name)); 
    $name->appendChild($xml->createCDATASection($field_value)); 
  }
}
 // Set the formatOutput attribute of xml to true
 $xml->formatOutput = true; 
 // Output to screen
 // header('Content-Type: text/xml');
 // echo $xml->saveXML();
 // Save as file
    $xml->save('xml-import.xml'); // save as file
    ?>

上述代码输出以下 XML 结构:

<channel>
 <item>
 <title>
  <![CDATA[ pablo1 ]]>
 </title>
 <description>
  <![CDATA[ this is description 1 ]]>
 </description>
 <link>
  <![CDATA[ http://www.link1.com ]]>
 </link>
 </item>
</channel>

有人知道如何更新代码以输出以下 XML 结构吗?基本上我需要添加 rss version="2.0" 行。

<rss version="2.0">
 <channel>
  <item>
   <title>
    <![CDATA[ pablo1 ]]>
   </title>
   <description>
    <![CDATA[ this is description 1 ]]>
   </description>
   <link>
    <![CDATA[ http://www.link1.com ]]>
   </link>
  </item>
 </channel>
</rss>

谢谢大家的帮助!

php xml csv
1个回答
0
投票

您可以嵌套元素...

$root = $xml->createElement('channel');
$rss = $xml->createElement('rss');
$rss->setAttribute("version","2.0");
$rss->appendChild($root);
$xml->appendChild($rss);
© www.soinside.com 2019 - 2024. All rights reserved.