XML到CSV转换问题

时间:2012-02-11 16:22:15

标签: php xml csv

我真的需要一些问题的帮助:我使用PHP脚本将XML转换为CSV,但我只需要获取CSV中的某些字段,而不是所有字段。有没有办法指定我要导入哪些字段?

这是XML文件结构:

<PRICES>
<PRICE>
<WIC>HDE0AAFGRBOX</WIC>
<DESCRIPTION>some text here</DESCRIPTION>
<STOCK>100</STOCK>
<MY_PRICE>219.00</MY_PRICE>
<IMAGE>some image here</image>
<EAN-CODE>some code here</EAN-CODE>
</PRICE>
</PRICES>

这是我使用的脚本:

<?
$filexml='stock.xml';
if (file_exists($filexml)) {
$xml = simplexml_load_file($filexml);
$f = fopen('stock.csv', 'w')
foreach($xml->PRICES->PRICE as $price) {
fputcsv($f, get_object_vars($price),',','"');
}
fclose($f);
}
?>

我只需要获得WIC,STOCK和MY_PRICE。

非常感谢任何帮助。

提前致谢!

1 个答案:

答案 0 :(得分:1)

您只需要创建包含这些属性的数组,然后将其发送到fputcsv()而不是get_object_vars()

$filexml='stock.xml';
if (file_exists($filexml)) {
  $xml = simplexml_load_file($filexml);
  $f = fopen('stock.csv', 'w');
  foreach($xml->PRICES->PRICE as $price) {
    // Array of just the components you need...
    $values = array("WIC" => $price->WIC, "STOCK" => $price->STOCK, "MY_PRICE" => $price->MY_PRICE);
    fputcsv($f, $values,',','"');
  }
  fclose($f);
}

注意:可能需要将这些值转换为字符串。没有测试我肯定不记得了:

$values = array(
   "WIC" => (string)$price->WIC, 
   "STOCK" => (string)$price->STOCK, 
   "MY_PRICE" => (string)$price->MY_PRICE
);