現在、次のコードを使用して 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);
}
}
}
?>
私は今2つの問題しか抱えていません。まず、他のフィールドではなく、 のデータのみを含めようとしています。私の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>
もう 1 つの問題は 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