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

标签 php xml simplexml

//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);
}

关于php - 使用简单 XML 添加具有相同名称的子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8082305/

相关文章:

php - 如何通过本地主机发送邮件?

php - 如何在php中增加最大执行时间

xml - 当被告知返回 false 时,模板返回 true()

c# - 如何接受 'dictionary' 数据作为自定义 .NET 属性参数?

javascript - jquery .load 返回变量处理

php - 如何使用 file_get_contents 和 expedia XML API 修复 411 Length Required 错误?

php - 如何区分表示元素和属性的 SimpleXML 对象?

php - 使用 SimpleXMLElement 从对象获取数组

php - 获取 SimpleXMLElement PHP 中的子级列表

php - 列计算器