尽管SimpleXML提供了一种删除XML节点的方法,但其修改功能还是受到一定限制。另一种解决方案是使用DOM扩展。dom_import_simplexml()将帮助您将转换
SimpleXMLElement为
DOMElement。
只是一些示例代码(经过PHP 5.2.5测试):
$data='<data> <seg id="A1"/> <seg id="A5"/> <seg id="A12"/> <seg id="A29"/> <seg id="A30"/></data>';$doc=new SimpleXMLElement($data);foreach($doc->seg as $seg){ if($seg['id'] == 'A12') { $dom=dom_import_simplexml($seg); $dom->parentNode->removeChild($dom); }}echo $doc->asXml();输出
<?xml version="1.0"?><data><seg id="A1"/><seg id="A5"/><seg id="A29"/><seg id="A30"/></data>
顺便说一句:使用XPath(SimpleXMLElement->xpath)时,选择特定节点要简单得多:
$segs=$doc->xpath('//seq[@id="A12"]');if (count($segs)>=1) { $seg=$segs[0];}// same deletion procedure as above


