0

我目前正在使用以下代码将我的 XML 文件转换为 CSV 文件...

<?php
$filexml='test.xml';
if (file_exists($filexml)) {
    $xml = simplexml_load_file($filexml);
    $f = fopen('test.csv', 'w');
    print_r($xml);
    createCsv($xml, $f);
    fclose($f);
}
function createCsv($xml,$f)
    {

        foreach ($xml->children() as $item) {

            $hasChild = (count($item->children()) > 0)?true:false;

            if( ! $hasChild) {
                $put_arr = array($item);
                fputcsv($f, $put_arr ,',','"');
            }
            else
            {
                createCsv($item, $f);
            }

        }

    }
?>

我现在只有两个问题。首先,我试图只包含与其他字段相反的数据。我的 XML 数据示例如下...

<PIES xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="www.aftermarket.org/eCommerce/Pies">
  <TestFile>false</TestFile>
  <Header>
    <PIESVersion>6.1</PIESVersion>
    <BrandOwnerDUNS>000567647</BrandOwnerDUNS>
    <CurrencyCode>USD</CurrencyCode>
    <LanguageCode>EN</LanguageCode>
    <TechnicalContact>Mark Toebben</TechnicalContact>
    <ContactEmail>mark@dcinet.com</ContactEmail>
  </Header>
  <Items>
    <Item MaintenanceType="C">
      <HazardousMaterialCode>N</HazardousMaterialCode>
      <ItemLevelGTIN GTINQualifier="UP">090127000380</ItemLevelGTIN>
      <PartNumber>0-1848-1</PartNumber>
      <BrandAAIAID>BBVL</BrandAAIAID>
      <BrandLabel>Holley</BrandLabel>
      <PartTerminologyID>5904</PartTerminologyID>
      <Descriptions>
        <Description MaintenanceType="C" DescriptionCode="DES" LanguageCode="EN">Street Carburetor</Description>
        <Description MaintenanceType="C" DescriptionCode="SHO" LanguageCode="EN">Crb</Description>
      </Descriptions>
      <Prices>
        <Pricing MaintenanceType="C" PriceType="JBR">
          <PriceSheetNumber>L30779-13</PriceSheetNumber>
          <CurrencyCode>USD</CurrencyCode>
          <EffectiveDate>2013-01-01</EffectiveDate>
          <Price UOM="PE">462.4600</Price>
        </Pricing>
        <Pricing MaintenanceType="C" PriceType="RET">
          <PriceSheetNumber>L30779-13</PriceSheetNumber>
          <CurrencyCode>USD</CurrencyCode>
          <EffectiveDate>2013-01-01</EffectiveDate>
          <Price UOM="PE">380.5500</Price>
        </Pricing>
        <Pricing MaintenanceType="C" PriceType="WD1">
          <PriceSheetNumber>L30779-13</PriceSheetNumber>
          <CurrencyCode>USD</CurrencyCode>
          <EffectiveDate>2013-01-01</EffectiveDate>
          <Price UOM="PE">314.4700</Price>
        </Pricing>
      </Prices>
      <ExtendedInformation>
        <ExtendedProductInformation MaintenanceType="C" EXPICode="CTO" LanguageCode="EN">US</ExtendedProductInformation>
        <ExtendedProductInformation MaintenanceType="C" EXPICode="NPC" LanguageCode="EN">A</ExtendedProductInformation>
        <ExtendedProductInformation MaintenanceType="C" EXPICode="HTS" LanguageCode="EN">8409914000</ExtendedProductInformation>
        <ExtendedProductInformation MaintenanceType="C" EXPICode="NAF" LanguageCode="EN">B</ExtendedProductInformation>
      </ExtendedInformation>
      <ProductAttributes>
        <ProductAttribute MaintenanceType="C" AttributeID="SKU" LanguageCode="EN">BBVL0-1848-1</ProductAttribute>
        <ProductAttribute MaintenanceType="C" AttributeID="ModDate" LanguageCode="EN">2012-12-31</ProductAttribute>
      </ProductAttributes>
      <Packages>
        <Package MaintenanceType="C">
          <PackageLevelGTIN>00090127000380</PackageLevelGTIN>
          <PackageUOM>EA</PackageUOM>
          <QuantityofEaches>1</QuantityofEaches>
          <Dimensions UOM="IN">
            <Height>7.5000</Height>
            <Width>11.0000</Width>
            <Length>12.2500</Length>
          </Dimensions>
          <Weights UOM="PG">
            <Weight>13.500</Weight>
            <DimensionalWeight>6.09</DimensionalWeight>
          </Weights>
        </Package>
      </Packages>
    </Item>
    <Item MaintenanceType="C">
      <HazardousMaterialCode>N</HazardousMaterialCode>
      <ItemLevelGTIN GTINQualifier="UP">090127539248</ItemLevelGTIN>
      <PartNumber>0-1850C</PartNumber>
      <BrandAAIAID>BBVL</BrandAAIAID>
      <BrandLabel>Holley</BrandLabel>
      <PartTerminologyID>5904</PartTerminologyID>
      <Descriptions>
        <Description MaintenanceType="C" DescriptionCode="DES" LanguageCode="EN">Street/Strip Carburetor</Description>
        <Description MaintenanceType="C" DescriptionCode="SHO" LanguageCode="EN">Crb</Description>
      </Descriptions>
      <Prices>
        <Pricing MaintenanceType="C" PriceType="JBR">
          <PriceSheetNumber>L30779-13</PriceSheetNumber>
          <CurrencyCode>USD</CurrencyCode>
          <EffectiveDate>2013-01-01</EffectiveDate>
          <Price UOM="PE">399.6600</Price>
        </Pricing>
        <Pricing MaintenanceType="C" PriceType="RET">
          <PriceSheetNumber>L30779-13</PriceSheetNumber>
          <CurrencyCode>USD</CurrencyCode>
          <EffectiveDate>2013-01-01</EffectiveDate>
          <Price UOM="PE">281.5500</Price>
        </Pricing>
        <Pricing MaintenanceType="C" PriceType="WD1">
          <PriceSheetNumber>L30779-13</PriceSheetNumber>
          <CurrencyCode>USD</CurrencyCode>
          <EffectiveDate>2013-01-01</EffectiveDate>
          <Price UOM="PE">271.7700</Price>
        </Pricing>
      </Prices>
      <ExtendedInformation>
        <ExtendedProductInformation MaintenanceType="C" EXPICode="CTO" LanguageCode="EN">US</ExtendedProductInformation>
        <ExtendedProductInformation MaintenanceType="C" EXPICode="NPC" LanguageCode="EN">A</ExtendedProductInformation>
        <ExtendedProductInformation MaintenanceType="C" EXPICode="HTS" LanguageCode="EN">8409914000</ExtendedProductInformation>
        <ExtendedProductInformation MaintenanceType="C" EXPICode="NAF" LanguageCode="EN">B</ExtendedProductInformation>
      </ExtendedInformation>
      <ProductAttributes>
        <ProductAttribute MaintenanceType="C" AttributeID="SKU" LanguageCode="EN">BBVL0-1850C</ProductAttribute>
        <ProductAttribute MaintenanceType="C" AttributeID="ModDate" LanguageCode="EN">2012-12-31</ProductAttribute>
      </ProductAttributes>
      <Packages>
        <Package MaintenanceType="C">
          <PackageLevelGTIN>00090127539248</PackageLevelGTIN>
          <PackageUOM>EA</PackageUOM>
          <QuantityofEaches>1</QuantityofEaches>
          <Dimensions UOM="IN">
            <Height>7.5000</Height>
            <Width>11.0000</Width>
            <Length>12.2500</Length>
          </Dimensions>
          <Weights UOM="PG">
            <Weight>13.750</Weight>
            <DimensionalWeight>6.09</DimensionalWeight>
          </Weights>
        </Package>
      </Packages>
    </Item>
  </Items>
</PIES>

另一个问题是在 CSV 文件中,数据不是逗号分隔,而是在一个新行上,如下所示。我希望它用逗号分隔,但不知道如何解决这个问题。有人可以指出我正确的方向吗?

N
090127000380
0-1848-1
BBVL
Holley
5904
"Street Carburetor"
Crb
L30779-13
USD
2013-01-01
462.4600
L30779-13
USD
2013-01-01
380.5500
L30779-13
USD
2013-01-01
314.4700
US
A
8409914000
B
BBVL0-1848-1
2012-12-31
00090127000380
EA
1
7.5000
11.0000
12.2500
13.500
6.09
4

0 回答 0