免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1501 | 回复: 4
打印 上一主题 下一主题

perl删除xml的某一段 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-11-29 20:30 |只看该作者 |倒序浏览
例如:
<a>
<b name="张三">
<c>
        <e id=15></e>
</c>
</b>
<b name="李四">
<c>
        <e id=20></e>
</c>
</b>
</a>



怎么删除指定name为某个值的整个字段

例如删除张三

就删除
<b name="张三">
<c>
        <e id=15></e>
</c>
</b>





论坛徽章:
0
2 [报告]
发表于 2012-11-29 21:29 |只看该作者
回复 1# top50


也许用正则可以删掉,但是安全点还是乖乖的先用模块解析成perl的hash结构,然后通过遍历删除掉指定属性的key/value对,最后再用模块还原回xml。

论坛徽章:
0
3 [报告]
发表于 2012-11-29 21:40 |只看该作者
kk861123 发表于 2012-11-29 21:29
回复 1# top50

求大神详细指导!多谢

论坛徽章:
0
4 [报告]
发表于 2012-11-29 21:42 |只看该作者
XML::Simple 就够了

论坛徽章:
3
CU十二周年纪念徽章
日期:2013-10-24 15:41:34子鼠
日期:2013-12-14 14:57:19射手座
日期:2014-04-25 21:23:23
5 [报告]
发表于 2012-11-30 09:45 |只看该作者
针对你现有的结构可以这样,不过还是用模块稳妥。
  1. while(<DATA>){
  2.     my $name = "张三";
  3.     next  if(/<b[^"]+"$name">/../<\/b>/);
  4. print $_;
  5. }
  6. __DATA__
  7. <a>
  8. <b name="张三">
  9. <c>
  10.         <e id=15></e>
  11. </c>
  12. </b>
  13. <b name="李四">
  14. <c>
  15.         <e id=20></e>
  16. </c>
  17. </b>
  18. </a>
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP