我有这个 SimpleXMLElement 对象,其 XML 设置类似于以下内容......
$xml = <<<EOX
<books>
<book>
<name>ABCD</name>
</book>
</books>
EOX;
$sx = new SimpleXMLElement( $xml );
现在我有一个名为 Book 的类,其中包含信息。关于每本书。同班还可以吐出书籍信息。类似于上面的 XML 格式(嵌套块).. 例如,
$book = new Book( 'EFGH' );
$book->genXML();
... will generate
<book>
<name>EFGH</name>
</book>
现在我试图找出一种方法,通过它我可以使用这个生成的 XML 块并将其附加为 的子项,以便现在它看起来像......例如......
// Non-existent member method. For illustration purposes only.
$sx->addXMLChild( $book->genXML() );
...XML tree now looks like:
<books>
<book>
<name>ABCD</name>
</book>
<book>
<name>EFGH</name>
</book>
</books>
从我读到的有关 SimpleXMLElement 的文档中,添加子对象()不会为您完成此操作,因为它不支持 XML 数据作为标记值。
两种解决方案。首先,您需要在 libxml / DOMDocument / SimpleXML 的帮助下完成此操作:您必须导入您的$sx
反对DOM http://docs.php.net/manual/en/book.dom.php, 创建一个DOMDocumentFragment
并使用DOMDocumentFragment::appendXML() http://docs.php.net/manual/en/domdocumentfragment.appendxml.php:
$doc = dom_import_simplexml($sx)->ownerDocument;
$fragment = $doc->createDocumentFragment();
$fragment->appendXML($book->genXML());
$doc->documentElement->appendChild($fragment);
// your original $sx is now already modified.
See the 在线演示 http://eval.in/17715.
您还可以从简单XML元素并添加一个提供此功能的方法。使用这个专门的对象可以让您轻松创建以下内容:
$sx = new MySimpleXMLElement($xml);
$sx->addXML($book->genXML());
另一种解决方案是使用已经内置此功能的 XML 库,例如简单DOM。你抢简单DOM http://code.google.com/p/simpledom/并且您使用 insertXML(),其工作方式类似于您所描述的 addXMLChild() 方法。
include 'SimpleDOM.php';
$books = simpledom_load_string(
'<books>
<book>
<name>ABCD</name>
</book>
</books>'
);
$books->insertXML(
'<book>
<name>EFGH</name>
</book>'
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)