我有products.xml文件,我想将其制作为csv,但是将image1,image2等组合到一个csv列字段中,链接用逗号分隔。
<?xml version="1.0" encoding="utf-8"?>
<products>
<product>
<product_id>14</product_id>
<name><![CDATA[Tricycle Vetta Melange Beige]]></name>
<date_created><![CDATA[2018-09-11 13:07:14]]></date_created>
<sku><![CDATA[31006020047]]></sku>
<product_url><![CDATA[https://localhost/trikolka-vetta-melange-beige]]></product_url>
<stock_status>In Stock</stock_status>
<parent_cat><![CDATA[All (Test)]]></parent_cat>
<sub_cat><![CDATA[Tricycles]]></sub_cat>
<description><![CDATA[Tricycle 3 in 1
(max. weigh load – 30 kg).
]]></description>
<description_html><![CDATA[Tricycle 3 in 1
(max. weigh load – 30 kg).
]]></description_html>
<characteristics>
<weight>15.6000</weight>
<volume>0.130</volume>
<barcode>3801006020477</barcode>
</characteristics>
<images>
<image_1>img_1593.jpg</image_1>
<image_2>vetta_beige_side_1.jpg</image_2>
<image_3>beige2.jpg</image_3>
<image_4>beige_up.jpg</image_4>
<image_5>beige_bike_1.jpg</image_5>
</images>
</product>
CSV应该带有标题,并且所有图像链接都应放在csv的一个字段中,并用逗号分隔
img_1593.jpg,vetta_beige_side_1.jpg,beige2.jpg etc.
product_id,
答案 0 :(得分:0)
您如何解析此XML?
如果您是用php自己做的(为您标记了这个问题),那么我将创建一个名为“产品”的类,该类使用每个产品节点进行构造,将每个子节点添加为单个属性或数组,然后添加一个“ asCSVRow()函数,该函数返回字符串。然后,无论XML如何构造属性,您都可以对属性进行任何操作。
例如
class product {
/*------*/
function __construct($productNode) {
$this->name = $productNode->name;
//Add other properties here
$this->images = array();
foreach ($productNode->images as $imageNode) {
$this->images[] = $imageNode;
}
//Syntax of this will differ depending on your method of parsing
}
/*------*/
public asCSVRow(){
return sprintf(
'"%s","%s"' . PHP_EOL,
$this->name,
implode(',', $this->images)
);
//Add other properties, and protect against double quotes in strings.
}
/*------*/
}
注意-这只是sudo代码,不能复制和粘贴,它表明无论使用哪种语言,手动解析/处理都可以返回所需的内容