SImpleXML分隔值

问题描述 投票:0回答:1

我正在尝试从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

php xml simplexml
1个回答
0
投票

您可以使用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

© www.soinside.com 2019 - 2024. All rights reserved.