PHP中使用DOM方法如何根据XML子节点值或子节点属性删除所在的父节点?

codelifes 2009-05-04 10:50:50
如题,取得了子节点名称和值以及属性值,如何根据这些删除所在的父节点?
...全文
112 2 打赏 收藏 举报
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
qazwsxhai 2009-05-05
[Quote=引用 1 楼 jakey9826 的回复:]
用domnode获取父节点然后再删除所在domnode
获取父节点用parentnode,删除子节点用removeChild

PHP code
$strXML = <<<TEST
<?xml version="1.0"?>
<test>
<Transaction>
<Item>
<ItemID>280274064551</ItemID>
</Item>
<orderid>555</orderid>
<listid>300</listid>
</Transaction>
<Transaction>
<Item>
<ItemID>280274064551</I…
[/Quote]


不错,顶.~
  • 打赏
  • 举报
回复
程序猿之殇 2009-05-05
用domnode获取父节点然后再删除所在domnode
获取父节点用parentnode,删除子节点用removeChild

$strXML = <<<TEST
<?xml version="1.0"?>
<test>
<Transaction>
<Item>
<ItemID>280274064551</ItemID>
</Item>
<orderid>555</orderid>
<listid>300</listid>
</Transaction>
<Transaction>
<Item>
<ItemID>280274064551</ItemID>
</Item>
<orderid>555</orderid>
<listid>290</listid>
</Transaction>
</test>
TEST;

$doc = new DOMDocument;
$doc->loadXML($strXML);
$trans = $doc->documentElement->getElementsByTagName('Transaction');
$length = $trans->length;

for($i=0;$i< $length; $i++)
{
$listid = $trans->item($i)->getElementsByTagName('listid');
$tmpid = $listid->item(0)->nodeValue;
if($tmpid == 300)
{
$trans->item($i)->parentNode->removeChild($trans->item($i));
//$listid->parentNode->parentNode->removeChild($listid->parentNode);
break;
}
}

echo $doc->saveXML();
  • 打赏
  • 举报
回复
发帖
基础编程

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
帖子事件
创建了帖子
2009-05-04 10:50
社区公告
暂无公告