专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Perl/Python

怎么在python中同时删除多个xml元素

发布时间:2011-06-29 20:10:37 文章来源:www.iduyao.cn 采编人员:星星草
如何在python中同时删除多个xml元素?
例子:xml文件所示:
<root dirname="xml">
- <dir dirname="b">
  <dir dirname="c" /> 
  </dir>
  </dir>
- <file>
  <filename>as</filename> 
  <filetype>txt</filetype> 
  <filehash>d41d8cd98f00b204e9800998ecf8427e</filehash> 
  <updateclient>Jackie-PC</updateclient> 
  <current_version>0</current_version> 
  <master_version>0</master_version> 
  </file>
  <file>
  <filename>asass</filename> 
  <filetype /> 
  <filehash>d6f199804ab7f9425057e940b16851a6</filehash> 
  <updateclient>Jackie-PC</updateclient> 
  <current_version>0</current_version> 
  <master_version>0</master_version> 
  </file>>
</root>
目的是想删除这块xml文件的这部分内容
“ <file>
  <filename>as</filename> 
  <filetype>txt</filetype> 
  <filehash>d41d8cd98f00b204e9800998ecf8427e</filehash> 
  <updateclient>Jackie-PC</updateclient> 
  <current_version>0</current_version> 
  <master_version>0</master_version> 
  </file>”


我的想法是用xpath找到file这个节点,然后寻找其子节点比较filename的名字是否相等,如果相等的话直接返回其父节点,然后用root删除掉该节点,代码如下
node2=root.xpath("/root/file")
for i in range(len(node2)):
... for c in node2[i]:
... if c.text=='as':
... print i
... root.remove(node2[i])
...
0
Traceback (most recent call last):
  File "<interactive input>", line 5, in <module>
  File "lxml.etree.pyx", line 744, in lxml.etree._Element.remove (src/lxml/lxml.etree.c:32634)
ValueError: Element is not a child of this node.


请问这是啥个原因呢,为什么node2[i]的父节点不是root了呢。。。求大牛解答给个方法呀

------解决方案--------------------
贴一段工整正确的代码这么难吗?
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: