SImpleXML 单独的值

SImpleXML separate values

我正在尝试从 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 后设置下一个值?

您可以使用 explode 并使用 ; 作为分隔符。

例如

$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 demo