本文主要是介绍python美化xml文件并保存,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
原始xml文件内容如下:
目标xml文件内容如下:
实现代码为:
import os
import time
import numpy as np
import xml.etree.ElementTree as ET
from xml.dom.minidom import parseString
from lxml.etree import Element, SubElement, tostring
from xml.etree.ElementTree import fromstring, ElementTreedef prettyXml(element, indent, newline, level = 0): # elemnt为传进来的Elment类,参数indent用于缩进,newline用于换行 if element: # 判断element是否有子元素 if element.text == None or element.text.isspace(): # 如果element的text没有内容 element.text = newline + indent * (level + 1) else: element.text = newline + indent * (level + 1) + element.text.strip() + newline + indent * (level + 1) #else: # 此处两行如果把注释去掉,Element的text也会另起一行 #element.text = newline + indent * (level + 1) + element.text.strip() + newline + indent * level temp = list(element) # 将elemnt转成list for subelement in temp: if temp.index(subelement) < (len(temp) - 1): # 如果不是list的最后一个元素,说明下一个行是同级别元素的起始,缩进应一致 subelement.tail = newline + indent * (level + 1) else: # 如果是list的最后一个元素, 说明下一行是母元素的结束,缩进应该少一个 subelement.tail = newline + indent * level prettyXml(subelement, indent, newline, level = level + 1) # 对子元素进行递归操作 return elementfrom xml.etree import ElementTree # 导入ElementTree模块
tree = ElementTree.parse('123.xml') # 解析test.xml这个文件,该文件内容如上文
root = tree.getroot() # 得到根元素,Element类
root = prettyXml(root, '\t', '\n') # 执行美化方法
ElementTree.dump(root) # 打印美化后的结果
tree = ET.ElementTree(root) # 转换为可保存的结构
xml_save_name = "xml_had_pretty.xml"
tree.write(xml_save_name) # 保存美化后的结果
此代码对https://blog.csdn.net/shinobiii/article/details/8253976该博客的的代码进行了微改。
这篇关于python美化xml文件并保存的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!