【发布时间】:2020-03-21 01:06:16
【问题描述】:
我正在尝试根据 PRODUCT_NUMBER 获取 PRINT_POSITION_URL 的 url。
对于产品编号为 7375-06 的产品,对于产品编号为 7375-04 的产品,我想获取 PRINT_POSITION_URL color="06" > 我想得到 PRINT_POSITION_URL color="04" 等。
这两个值位于不同的 XML 文件中,我从 url 获取它们,它们与字段 PRODUCT_PRINT_ID 相关。
这是我的第一个 XML 文件(products.xml):
<PRODUCTS>
<PRODUCT>
<PRODUCT_NUMBER>7375-06</PRODUCT_NUMBER>
<PRODUCT_NAME>Soft ball</PRODUCT_NAME>
<PRODUCT_PRINT_ID>40002010</PRODUCT_PRINT_ID>
</PRODUCT>
</PRODUCTS>
这是我的第二个 XML 文件(print-info.xml)
<PRINTINGINFORMATION>
<PRODUCTS>
<PRODUCT>
<PRODUCT_PRINT_ID>40002010</PRODUCT_PRINT_ID>
<PRINTING_POSITIONS>
<PRINTING_POSITION>
<PRINT_POSITION_URL color="04">https://thumb_7375_04.jpg</PRINT_POSITION_URL>
<PRINT_POSITION_URL color="05">https://thumb_7375_05.jpg</PRINT_POSITION_URL>
<PRINT_POSITION_URL color="06">https://thumb_7375_06.jpg</PRINT_POSITION_URL>
</PRINTING_POSITION>
</PRINTING_POSITIONS>
</PRODUCT>
</PRODUCTS>
</PRINTINGINFORMATION>
这是我尝试过的:
<?php
header ("Content-Type:text/xml");
$xmlA = simplexml_load_file('ftp://.../prodinfo_EN.xml');
$xmlB = simplexml_load_file('ftp://.../printinfo.xml');
// create empty output xml object
$final = new simpleXMLElement('<?xml version="1.0" encoding="utf-8"?><PRODUCTINFORMATION></PRODUCTINFORMATION>');
$products = $final->addChild("PRODUCTS");
foreach ($xmlA->PRODUCTS->PRODUCT as $proda) {
$prodbaseno = (string)$proda->PRODUCT_NUMBER;
$prodname = (string)$proda->PRODUCT_NAME;
$prodprintid = (string)$proda->PRODUCT_PRINT_ID;
// build the output xml
$prodnew = $products->addChild('PRODUCT');
$prodnew->addChild('PRODUCT_NUMBER', $prodbaseno);
$prodnew->addChild('PRODUCT_NAME', $prodname);
$prodnew->addChild('PRODUCT_PRINT_ID', $prodprintid);
// find related field from xml file B based on PRODUCT_PRINT_ID
if ($prodarr = $xmlB->xpath("PRODUCTS/PRODUCT[PRODUCT_PRINT_ID='$prodprintid']")) {
$prodb = $prodarr[0];
$prtposns = $prodnew->addChild('PRINTING_POSITIONS');
foreach ($prodb->PRINTING_POSITIONS->PRINTING_POSITION as $prtpos ) {
$posnew = $prtposns->addChild('PRINTING_POSITION');
$posnew->addChild('PRINT_POSITION_URL', $prtpos->PRINT_POSITION_URL);
}
}
}
echo $final->saveXml();
?>
结果如下:
<PRODUCTINFORMATION>
<PRODUCTS>
<PRODUCT>
<PRODUCT_NUMBER>MO7375-06</PRODUCT_NUMBER>
<PRODUCT_NAME>Soft ball</PRODUCT_NAME>
<PRODUCT_PRINT_ID>40002010</PRODUCT_PRINT_ID>
<PRINTING_POSITIONS>
<PRINTING_POSITION>
<PRINT_POSITION_URL color="04">https://thumb_7375_04.jpg</PRINT_POSITION_URL>
</PRINTING_POSITION>
</PRINTING_POSITIONS>
</PRODUCT>
</PRODUCTS>
</PRODUCTINFORMATION>
【问题讨论】:
-
您的问题不清楚。您是要获取具有
color="06"的产品的 url,还是要获取06本身的值,因为它是第三种颜色,还是什么?此外,使用更多代码(包含所有变量)编辑问题。