使用PHP

时间:2016-09-16 10:32:39

标签: php xml simplexml

是否可以将PHP SimpleXMLElement作为另一个元素的子项插入

$xml   = new SimpleXMLElement('<root/>');
$xml_a = new SimpleXMLElement('<parent/>');
$xml_b = new SimpleXMLElement('<child/>');
$xml_b->addAttribute('attribute','value');
$xml_b->addChild('item','itemValue');
// the part will cause and error
$xml_a->addChild($xml_b);
$xml->addChild($xml_a);

我知道上面的代码不起作用,但这就是我正在寻找的东西。

所以结构如下:

<root>
 <partent>
  <child attribute="value">
   <item>itemValue</item>
  </child>
 </parent>
</root>

我尝试使用类似下面的内容addChild()

$dom = dom_import_simplexml($xml_a);
$_xml_ = $dom->ownerDocument->saveXML($dom->ownerDocument->documentElement);
$xml->addChild('parent',$_xml_);

解决方案确实相对简单,但我之前没有使用SimpleXMLElement

1 个答案:

答案 0 :(得分:1)

您不能使用SimpleXML,但如果您真的需要操作DOM或从头开始创建它,请考虑DOMDocument。

$xmlObject   = new \DOMDocument();
$xml = $xmlObject->createElement('root');
$xml_a = $xmlObject->createElement('parent');
$xml_b = $xmlObject->createElement('child');
$xml_b->setAttribute('attribute','value');
$xml_b->appendChild(new \DOMElement('item', 'itemValue'));
$xml_a->appendChild($xml_b);
$xml->appendChild($xml_a);
$xmlObject->appendChild($xml);
echo $xmlObject->saveXML();