阅读xml内容并使用php添加一些数字
我有一个xml文件,但通过php我只想对某些产品进行一些更改(每个项目都有自己的id)。 让我更好地解释一些产品,我想将运费与价格相加,并将物品使用网格从1放到0阅读xml内容并使用php添加一些数字,php,xml,Php,Xml,我有一个xml文件,但通过php我只想对某些产品进行一些更改(每个项目都有自己的id)。 让我更好地解释一些产品,我想将运费与价格相加,并将物品使用网格从1放到0 <Products> <Product> <sku>35</sku> <sku_manufacturer>test sku</sku_manufacturer> <manufacturer>test manufacturer
<Products>
<Product>
<sku>35</sku>
<sku_manufacturer>test sku</sku_manufacturer>
<manufacturer>test manufacturer</manufacturer>
<ean>800000000000</ean>
<title><![CDATA[title test]]></title>
<description><![CDATA[description</description>
<product_price_vat_inc>8.08</product_price_vat_inc>
<shipping_price_vat_inc>4.99</shipping_price_vat_inc>
<quantity>2842</quantity>
<brand><![CDATA[Finder]]></brand>
<merchant_category><![CDATA[Home/test category]]></merchant_category>
<product_url><![CDATA[https://www.example.com]]></product_url>
<image_1><![CDATA[https://www.example.com]]></image_1>
<image_2><![CDATA[]]></image_2>
<image_3><![CDATA[]]></image_3>
<image_4><![CDATA[]]></image_4>
<image_5><![CDATA[]]></image_5>
<retail_price_vat_inc/>
<product_vat_rate>22</product_vat_rate>
<shipping_vat_rate>22</shipping_vat_rate>
<manufacturer_pdf/>
<ParentSKU/>
<parent_title/>
<Cross_Sell_Sku/>
<ManufacturerWarrantyTime/>
<use_grid>1</use_grid>
<carrier>DHL</carrier>
<shipping_time>2#3</shipping_time>
<carrier_grid_1>DHL</carrier_grid_1>
<shipping_time_carrier_grid_1>2#3</shipping_time_carrier_grid_1>
<carrier_grid_2/>
<shipping_time_carrier_grid_2/>
<carrier_grid_3/>
<shipping_time_carrier_grid_3/>
<carrier_grid_4/>
<shipping_time_carrier_grid_4/>
<carrier_grid_5/>
<shipping_time_carrier_grid_5/>
<DisplayWeight>0.050000</DisplayWeight>
<free_return/>
<min_quantity>1</min_quantity>
<increment>1</increment>
<sales>0</sales>
<eco_participation>0</eco_participation>
<shipping_price_supplement_vat_inc>0</shipping_price_supplement_vat_inc>
<Unit_count>-1.000000</Unit_count>
<Unit_count_type/>
</Product>
</Products>
35
测试sku
测试制造商
800000000000
8.08
4.99
2842
22
22
1.
敦豪环球速递公司
2#3
敦豪环球速递公司
2#3
0.050000
1.
1.
0
0
0
-1.000000
您的XML有点大,因此让我们将其剥离出来作为示例:
$xmlString = <<<'XML'
<Products>
<Product>
<sku>35</sku>
<title><![CDATA[title test]]></title>
<use_grid>1</use_grid>
</Product>
<Product>
<sku>42</sku>
<title><![CDATA[title test two]]></title>
<use_grid>1</use_grid>
</Product>
</Products>
XML;
输出:
string(2) "35"
string(10) "title test"
string(1) "1"
<?xml version="1.0"?>
<Products>
<Product>
<sku>35</sku>
<title><![CDATA[title test]]></title>
<use_grid>0</use_grid>
</Product>
<Product>
<sku>42</sku>
<title><![CDATA[title test two]]></title>
<use_grid>1</use_grid>
</Product>
</Products>
字符串(2)“35”
字符串(10)“标题测试”
字符串(1)“1”
35
0
42
1.
Xpath::evaluate()
Xpath::evaluate()
使用Xpath表达式获取节点。结果类型取决于表达式。类似于//Product[sku=“35”]
的位置路径将返回节点列表(DOMNodeList
)。但是中的Xpath函数可以返回标量值-字符串(sku)
将以字符串或空字符串的形式返回第一个sku
子节点的文本内容
DOMNode::$textContent
读取$node->textContent
将返回节点内的所有文本,包括子元素内的文本
在处理转义的同时,写入它会替换内容。谢谢,它工作得很好。我想问你最后一件事,因为我必须编辑几个sku,为了避免写入太多行,是否可以使用csv文件,在第一列中输入sku,在第二列中输入要更改的值?
string(2) "35"
string(10) "title test"
string(1) "1"
<?xml version="1.0"?>
<Products>
<Product>
<sku>35</sku>
<title><![CDATA[title test]]></title>
<use_grid>0</use_grid>
</Product>
<Product>
<sku>42</sku>
<title><![CDATA[title test two]]></title>
<use_grid>1</use_grid>
</Product>
</Products>