2012-02-11 14 views
1

PHPのスクリプトを使用してXMLをCSVに変換していますが、CSVで特定のフィールドを取得するだけで、すべてを取得する必要はありません。インポートするフィールドを指定する方法はありますか?XMLから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、株式やMY_PRICEを取得する必要があります。

ご協力いただきますようお願い申し上げます。

ありがとうございます!

答えて

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

ありがとう、それは完璧に動作します! – alexius