Python生成xml雷点

一、命名空间冲突,标签前显示ns0:问题

Python生成xml雷点_第1张图片

解决办法是添加以下2行标识命名空间:

from xml.etree.ElementTree import register_namespace
register_namespace('', "http://autosar.org/schema/r4.0")

Python生成xml雷点_第2张图片

 二、python删除元素A下的所有祖孙结点

1、递归删除A(即root_idts)的每一个直接结点下的祖孙结点
def del_iter(root_idts):
    if len(root_idts) != 0:
        for chi in root_idts:
            if len(chi) != 0:
                for delete_childs in chi:
                    del_iter(delete_childs)
            else:
                root_idts.remove(chi)
    else:
        pass
2、调用1的方法,然后删除A(即root_idts)的每一个直接结点
while len(root_idt) != 0:
    for root_idt_chi in root_idt:
        del_iter(root_idt_chi)
        root_idt.remove(root_idt_chi)

三、格式化xml文件

python解析xml文件,使用apend向xml文件追加元素时,没有自带格式化,展示如下:

Python生成xml雷点_第3张图片

特殊处理格式化:

1、引入模块:import xml.dom.minidom as MI

2、删除xml的所有元素前后的空格空行,以字符串保存

lines = ''
fileHandler = open("D:\\tools\\project_data\\test.arxml","r", encoding='UTF-8')
listOfLines = fileHandler.readlines()
for line in listOfLines:
    lines = lines + line.strip()
fileHandler.close()

3、toprettyxml处理字符串,生成新的格式化的xml并逐行写入

xml = MI.parseString(lines)
xml_pretty_str = xml.toprettyxml()
file_write = open("D:\\tools\\project_data\\new.arxml",'w',encoding='UTF-8')  # 新文件
for line in xml_pretty_str:
    file_write.write(line)# 逐行写入
file_write.close()

Python生成xml雷点_第4张图片

 

你可能感兴趣的:(xml,python,pycharm,vscode,嵌入式硬件)