php – 使用简单XML添加具有相同名称的子元素

//create a simple xml object
$xml = new SimpleXMLElement('some valid xml');

//add a my_elements node
$xml->addChild('my_elements');

//an array of elements that will be added to to my_elments
$my_elements = array('element_1', 'element_2', 'element_3');

foreach($my_elements as $element){
   //my_element is only added once as shown below
   $xml->my_elements->addChild('my_element');

   $xml->my_elements->my_element->addChild('something', $element);
}

我希望这看起来像这样(为了便于阅读,以xml显示)

<xml>
   <my_elements>
      <my_element>
          <something>element_1</something>
      </my_element>
      <my_element>
          <something>element_2</something>
      </my_element>
      <my_element>
          <something>element_3</something>
      </my_element>
   </my_elements>
</xml>

但我得到的更像是这样的东西

<xml>
   <my_elements>
      <my_element>
         <something>element_1</something>
         <something>element_2</something>
         <something>element_3</something>
      </my_element>
   </my_elements>
</xml>

使用具有相同名称的addChild时是否可以创建单独的子节点?

解决方法:

是的,您只需要将子项添加到新添加的元素,而不是现有元素.见http://php.net/manual/en/simplexmlelement.addchild.php

foreach($my_elements as $element){
   //my_element is only added once as shown below
   $new_my_element = $xml->my_elements->addChild('my_element');
   $new_my_element->addChild('something', $element);
}

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...