簡體   English   中英

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM