Простой XML отдельные значения - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь получить значения из файла XML, но я хочу, чтобы они разделялись в разных полях.

Мой XML файл:

<PRODUCTS>
  <PRODUCT>
    <PRODUCT_NUMBER>7375-06</PRODUCT_NUMBER>
    <PRODUCT_NAME>Soft ball</PRODUCT_NAME>
    <ITEM_COLOR_NUMBER>04;05;10</ITEM_COLOR_NUMBER>
  </PRODUCT>
</PRODUCTS>

Мой код:

<?php
  header ("Content-Type:text/xml");
  $xmlA = simplexml_load_file('ftp://.../products.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->ITEM_COLOR_NUMBER;

        // build the output xml
        $prodnew = $products->addChild('PRODUCT');
        $prodnew->addChild('PRODUCT_NUMBER', $prodbaseno);
        $prodnew->addChild('PRODUCT_NAME', $prodname);
        $prodnew->addChild('ITEM_COLOR_NUMBER', $prodprintid);
      }  

  echo $final->saveXml();
?>

Вывод:

<PRODUCTINFORMATION>
  <PRODUCTS>
    <PRODUCT>
      <PRODUCT_NUMBER>MO7375-06</PRODUCT_NUMBER>
      <PRODUCT_NAME>Soft ball</PRODUCT_NAME>
      <ITEM_COLOR_NUMBER>04;05;10</ITEM_COLOR_NUMBER>
    </PRODUCT>
  </PRODUCTS>
</PRODUCTINFORMATION>

Но что мне действительно нужно для ITEM_COLOR_NUMBER:

<ITEM_COLOR_NUMBER>04</ITEM_COLOR_NUMBER>
<ITEM_COLOR_NUMBER>05</ITEM_COLOR_NUMBER>
<ITEM_COLOR_NUMBER>10</ITEM_COLOR_NUMBER>

Как я могу установить это после ; создать новый ITEM_COLOR_NUMBER со следующим значением?

1 Ответ

0 голосов
/ 31 марта 2020

Вы можете использовать взорвать и использовать ; в качестве разделителя.

Например,

$prodnew = $products->addChild('PRODUCT');
$prodnew->addChild('PRODUCT_NUMBER', $prodbaseno);
$prodnew->addChild('PRODUCT_NAME', $prodname);
foreach (explode(';', $prodprintid) as $item) {
    $prodnew->addChild('ITEM_COLOR_NUMBER', $item);
}

Вывод

<PRODUCTINFORMATION>
    <PRODUCTS>
        <PRODUCT>
            <PRODUCT_NUMBER>7375-06</PRODUCT_NUMBER>
            <PRODUCT_NAME>Soft ball</PRODUCT_NAME>
            <ITEM_COLOR_NUMBER>04</ITEM_COLOR_NUMBER>
            <ITEM_COLOR_NUMBER>05</ITEM_COLOR_NUMBER>
            <ITEM_COLOR_NUMBER>10</ITEM_COLOR_NUMBER>
        </PRODUCT>
    </PRODUCTS>
</PRODUCTINFORMATION>

Php демо

...