python xml.etree.ElementTree 模块批量处理xml 标签

在用 xml.etree.ElementTree 模块批量删除xml标签的时候,会出现的问题是,用遍历并不能一次将复合条件的标签删掉。

如下:



    下载失败,请检查网络
    下载出错,正在尝试重新下载,请稍候
    下载失败:MD5不匹配
    下载失败:原始文件MD5不匹配
    文件合并失败,请重试
    以下Provider的authorities属性配置错误或缺失:
    取消

在从网上看到有网友说,remove()每次删除标签的时候,都会重新获取对象。根据自己出现的情况于是找到了核实的方法:

就是将你删除的lebian标签个数统计出来,然后每删除一个标签,获取一下文件的对象。

步骤如下:

1:打开xml 文件获取root标签

2:将符合条件的标签进行删除

3:重新将删除后的xml写入文件。

4:一次遵循上面1-3的步骤,直到删除完毕

def main(filename,log):
    num=0
    try:
        tree=ET.parse(filename)
        root=tree.getroot()
        for i in root.getchildren():
            for chid in i.attrib:
                if i.attrib[chid].find("lebian")>=0 or i.attrib[chid].find("Lebian")>=0:
                    num=num+1
                    break;
    except Exception,e:
        print e
    finally:
        return num
def remove(num,filename,log):
    time=0;
    while(time         tree=ET.parse(filename)
        root=tree.getroot()
        for i in root.getchildren():
            for chid in i.attrib:
                if i.attrib[chid].find("lebian")>=0 or i.attrib[chid].find("Lebian")>=0:
                    time=time+1
                    root.remove(i)
                    break;
        tree.write(filename,encoding="utf-8",xml_declaration=True)


 

 

你可能感兴趣的:(Python)