使用Python中的xml元素树解析器从nmap xml报告中删除内容?

时间:2014-08-21 22:47:29

标签: python xml nmap

好吧,我终于把XML树走了下来,然后吐出我想要的信息吐出来,但现在我想弄清楚如何修改XML树可以删除我不想要的所有垃圾并用修改后的树覆盖旧文件。

执行以下操作:

import xml.etree.ElementTree as ET
tree = ET.parse('nmaptest.xml')
root = tree.getroot()

for host in root.iter('host'):
   for elem in host.iter():
       if elem.tag == "extraports":
             if elem.tag['count'] == "1000":
                 print elem.attrib['count']

从每个具有该值的元素中正确地吐出一堆1000 ...如果我删除了第二个if语句,它会输出所有不同的数字(996,988,取决于开放端口, )但是,当我将print elem.attrib行更改为

root.remove(host)

它实际上并没有删除主机节点/元素/无论我认为它应该是什么样的方式......我错过了什么?

1 个答案:

答案 0 :(得分:0)

root.remove(host)之后,您需要tree.write('your.xml')才能看到更改。

for host in root.iter('host'):
   for elem in host.iter():
       if elem.tag == "extraports":
             if elem.tag['count'] == "1000":
                 root.remove(host)
tree.write('your.xml')` # write changes