PHP - 使用 fputcsv 将 XML 转换为 CSV
PHP - Convert XML to CSV using fputcsv
如何使用 fputcsv
将以下 XML 转换为 CSV
<?xml version="1.0" encoding="utf-8"?>
<PRODUCTINFORMATION>
<SUPPLIER>Company</SUPPLIER>
<PRODUCTS>
<PRODUCT>
<PRODUCT_NUMBER>AR1249-16</PRODUCT_NUMBER>
<PRODUCT_BASE_NUMBER>AR1249</PRODUCT_BASE_NUMBER>
<PRODUCT_ID>10134325</PRODUCT_ID>
</PRODUCT>
<PRODUCT>
<PRODUCT_NUMBER>AR1253-16</PRODUCT_NUMBER>
<PRODUCT_BASE_NUMBER>AR1253</PRODUCT_BASE_NUMBER>
<PRODUCT_ID>10134300</PRODUCT_ID>
</PRODUCT>
<PRODUCT>
<PRODUCT_NUMBER>AR1424-03</PRODUCT_NUMBER>
<PRODUCT_BASE_NUMBER>AR1424</PRODUCT_BASE_NUMBER>
<PRODUCT_ID>10147594</PRODUCT_ID>
</PRODUCT>
</PRODUCTS>
</PRODUCTINFORMATION>
我的PHP是:
<?php
$xml = simplexml_load_file('prodinfo.xml');
$csv = fopen('prodinfo.csv', 'w');
foreach($xml->PRODUCTS->PRODUCT as $element) {
foreach($element->PRODUCT_NUMBER as $productNumber){
foreach($element->PRODUCT_BASE_NUMBER as $productBaseNumber){
echo $productNumber ,";", $productBaseNumber. '<BR>' ;
//fputcsv($csv, get_object_vars($productNumber),',','"');
//fclose($csv);
}
}
}
?>
您不需要那么多 foreach()
循环来获取每个产品。从每个项目构建数组也更容易,因为它是固定的并且只有几个字段...
$csv = fopen('prodinfo.csv', 'w');
fputcsv($csv, ["PRODUCT_NUMBER","PRODUCT_BASE_NUMBER","PRODUCT_ID"]
,',','"');
foreach($xml->PRODUCTS->PRODUCT as $element) {
fputcsv($csv, [(string)$element->PRODUCT_NUMBER,
(string)$element->PRODUCT_BASE_NUMBER,
(string)$element->PRODUCT_ID
],',','"');
}
fclose($csv);
如何使用 fputcsv
<?xml version="1.0" encoding="utf-8"?>
<PRODUCTINFORMATION>
<SUPPLIER>Company</SUPPLIER>
<PRODUCTS>
<PRODUCT>
<PRODUCT_NUMBER>AR1249-16</PRODUCT_NUMBER>
<PRODUCT_BASE_NUMBER>AR1249</PRODUCT_BASE_NUMBER>
<PRODUCT_ID>10134325</PRODUCT_ID>
</PRODUCT>
<PRODUCT>
<PRODUCT_NUMBER>AR1253-16</PRODUCT_NUMBER>
<PRODUCT_BASE_NUMBER>AR1253</PRODUCT_BASE_NUMBER>
<PRODUCT_ID>10134300</PRODUCT_ID>
</PRODUCT>
<PRODUCT>
<PRODUCT_NUMBER>AR1424-03</PRODUCT_NUMBER>
<PRODUCT_BASE_NUMBER>AR1424</PRODUCT_BASE_NUMBER>
<PRODUCT_ID>10147594</PRODUCT_ID>
</PRODUCT>
</PRODUCTS>
</PRODUCTINFORMATION>
我的PHP是:
<?php
$xml = simplexml_load_file('prodinfo.xml');
$csv = fopen('prodinfo.csv', 'w');
foreach($xml->PRODUCTS->PRODUCT as $element) {
foreach($element->PRODUCT_NUMBER as $productNumber){
foreach($element->PRODUCT_BASE_NUMBER as $productBaseNumber){
echo $productNumber ,";", $productBaseNumber. '<BR>' ;
//fputcsv($csv, get_object_vars($productNumber),',','"');
//fclose($csv);
}
}
}
?>
您不需要那么多 foreach()
循环来获取每个产品。从每个项目构建数组也更容易,因为它是固定的并且只有几个字段...
$csv = fopen('prodinfo.csv', 'w');
fputcsv($csv, ["PRODUCT_NUMBER","PRODUCT_BASE_NUMBER","PRODUCT_ID"]
,',','"');
foreach($xml->PRODUCTS->PRODUCT as $element) {
fputcsv($csv, [(string)$element->PRODUCT_NUMBER,
(string)$element->PRODUCT_BASE_NUMBER,
(string)$element->PRODUCT_ID
],',','"');
}
fclose($csv);