Jos*_*vis 21
正如它所提到的,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());
Run Code Online (Sandbox Code Playgroud)
它看起来不像SimpleXML支持那样做,所以你有两个选择:
使用DOM模块(或者可能是其他XML模块之一),并使用DOMNode :: insertBefore方法,或者
创建一个新的SimpleXMLElement,复制属性,然后添加新节点,然后添加原始节点的所有子节点,然后用新节点替换原始节点.
更新: 在稍微查看文档之后,我会建议类似下面的内容(假设您仍然希望在大多数情况下坚持使用SimpleXML,否则,只需将DOM直接用于所有内容):
$dom_elem = dom_import_simplexml($simple_xml_element);
$dom_elem->insertBefore(dom_import_simplexml($new_element), $dom_elem->firstChild);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7359 次 |
| 最近记录: |