Php 将XML解析为CSV,同时使用逗号将一些字段值合并为一个字段
我有products.xml文件,我想将其设置为csv,但将image1、image2等组合到一个csv列字段,链接将用逗号分隔Php 将XML解析为CSV,同时使用逗号将一些字段值合并为一个字段,php,Php,我有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]]>
<?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>
产品id,如何解析此XML 如果您在为这个问题添加标签时自己在php中这样做,那么我将创建一个名为“product”的类,该类使用每个产品节点构造,将每个子节点添加为单个属性或数组,然后添加一个返回字符串的“asCSVRow”函数。然后,无论XML如何构造属性,您都可以对属性执行任何操作 乙二醇
注意-这只是sudo代码,不可复制和复制,它只是表明,无论使用何种语言,手动解析/处理都可以返回您想要的内容您没有提出任何问题。到目前为止,你写的代码中有什么不适用?我无法让代码将所有图片链接合并到一个字段中。我的代码使它成为在csv中分隔列,而不是在一个图像列中,并且用逗号分隔的链接只是在图像字段周围加引号,否则csv解析器会认为它们都是单独的字段。或者使用逗号以外的其他符号来分隔图像。将以下内容更改为:img_1593.jpg,vetta_米色_side_1.jpg,beige2.jpg:img_1593.jpg,vetta_米色_side_1.jpg,beige2.jpg
img_1593.jpg,vetta_beige_side_1.jpg,beige2.jpg etc.
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.
}
/*------*/
}