有没有办法到PHP的SimpleXMLElement添加到其他的SimpleXMLElement?(

2019-06-26 10:18发布

的SimpleXMLElement的“的addChild”方法似乎应该是正确的选择,但它显然只需要较新子的标记名字符串。

还有用于引用树的节点,设置它们,如$ simpleXMLNode->子=值的对象十岁上下的符号,但这似乎只为简单的文本/数值工作。 如果我尝试以下方法:

$s = new SimpleXMLElement('<root/>');
$t = new SimpleXMLElement('<child/>');
$s->a = $t;
echo $s->asXML()

我得到:

<?xml version="1.0"?>
<root><a></a></root>

当我希望的:

<?xml version="1.0"?>
<root><a><child/></a></root>

我以为$ T转换为字符串,然后将其添加(剥出XML声明之后):

$s->a = substr($t->asXML(),22)

但是,这产生了:

<?xml version="1.0"?>
<root><a>&lt;child/&gt;</a></root>

同样,不是我所希望的。

有没有办法实现这种东西用SimpleXML典型的方式是什么?

Answer 1:

嘿未知。 你必须使用一个DOMElement接口您的SimpleXML对象来实现这一目标。

<?php

$s = new SimpleXMLElement('<root/>');
$t = new DOMElement('child');

$dom = dom_import_simplexml($s);
$dom->appendChild($t);

echo $s->asXML();
// <root><child/></root>

如果您需要更具体的细节,让我知道。 有文件和意见的dom_import_simplexml()方法中的几个例子太多: http://php.net/dom_import_simplexml



Answer 2:

我不知道这是否会帮助,但你也可以扩展SimpleXML的,你期望的工作。 这是一个项目,我的工作对bLibrary的Xml类。 你可以看一下它定制的SimpleXML,你期望它的工作。



文章来源: Is there a way to add a PHP SimpleXMLElement to another SimpleXMLElement?
标签: php simplexml