当我打电话时
addChild('actor', 'John Doe');
这个孩子是最后添加的。有没有办法让这个新孩子成为第一个孩子?
正如前面提到的,SimpleXML 不支持这一点,因此您必须使用 DOM。我的建议如下:使用您需要在程序中使用的任何内容来扩展 SimpleXMLElement。这样,您就可以将所有 DOM 操作和其他 XML 魔法保留在实际程序之外。通过将这两件事分开,可以提高可读性和可维护性。
以下是如何使用新方法 prependChild() 扩展 SimpleXMLElement:
class my_node extends SimpleXMLElement
{
public function prependChild($name, $value)
{
$dom = dom_import_simplexml($this);
$new = $dom->insertBefore(
$dom->ownerDocument->createElement($name, $value),
$dom->firstChild
);
return simplexml_import_dom($new, get_class($this));
}
}
$actors = simplexml_load_string(
'<actors>
<actor>Al Pacino</actor>
<actor>Zsa Zsa Gabor</actor>
</actors>',
'my_node'
);
$actors->addChild('actor', 'John Doe - last');
$actors->prependChild('actor', 'John Doe - first');
die($actors->asXML());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)