Я пытаюсь получить URL PRINT_POSITION_URL на основе PRODUCT_NUMBER.
Для продукта с номером продукта 7375- 06 я хочу получить PRINT_POSITION_URL color = "06" , для продукта с номером продукта 7375- 04 я хочу получить PRINT_POSITION_URL color = "04" et c.
Эти два значения находятся в разные 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>