参考文章:https://blog.csdn.net/weixin_42749767/article/details/82770563
https://www.cnblogs.com/Erick-L/p/6416379.html
两种读写xml的方式各有优势,看自己想要哪种功能。简单说下:
1. minidom创建的XML格式有缩进,好看。用ET创建的xml没有缩进空行等,用文本打开不好看。
2. minidom得到已知标签的所有节点比较容易,但是如果要是得到子节点就不太方便,因为空行和空格会被算作文本节点,那么对不同格式的xml可能得到的结果不同。ET获取子节点比较容易,也可使用相对路径或者xpath进行定位,操作更加灵活。
选用哪种xml库就看自己需求偏向于哪一种了。
一、用xml.dom.minidom写xml
a. 写XML使用范例:
writexml.py
#!/usr/bin/env python # _*_ coding: UTF-8 _*_ """================================================= @Project -> File : write_xml.py @IDE : PyCharm @Author : zihan @Date : 2021/10/15 13:28 @Desc : =================================================""" import xml.dom.minidom def writexml(): doc = xml.dom.minidom.Document() root = doc.createElement('BOOK') # 创建节点 root.setAttribute('Description', 'This is a book store') # 设置节点属性 root.setAttribute('Name', 'Happy Home') # 设置节点属性 doc.appendChild(root) # 添加根节点 book1 = doc.createElement('book') # 创建节点 book1.setAttribute('Name', 'C++') # 设置节点属性 book1_1 = doc.createElement('book') # 创建book1_1节点 book1_1.setAttribute('language', 'Chinese') # 设置节点属性 book1_1.appendChild(doc.createTextNode("C++从入门到精通")) # 设置节点的Value值。doc.createTextNode就是文本节点 book1_2 = doc.createElement('book') book1_2.setAttribute('language', 'Chinese') book1_2.appendChild(doc.createTextNode("C++程序设计语言")) book2 = doc.createElement('book') book2.setAttribute('Name', 'Python') book2_1 = doc.createElement('book') book2_1.setAttribute('language', 'Chinese') book2_1.appendChild(doc.createTextNode("Python从入门到精通")) book3 = doc.createElement('book') book3.setAttribute('Name', 'Linux') book3_1 = doc.createElement('book') book3_1.setAttribute('language', 'Chinese') book3_1.appendChild(doc.createTextNode("Linux从入门到精通")) book1.appendChild(book1_1) # book1节点添加子节点book1_1 book1.appendChild(book1_2) # book1节点添加子节点book1_2 book2.appendChild(book2_1) # book2节点添加子节点book2_1 book3.appendChild(book3_1) # book3节点添加子节点book3_1 root.appendChild(book1) # root节点添加子节点book1 root.appendChild(book2) # root节点添加子节点book2 root.appendChild(book3) # root节点添加子节点book3 # 将内容写入book.xml,设置encoding='utf-8'是为了中文不乱码 with open("book.xml", "w", encoding='utf-8') as f: doc.writexml(f, indent='\t', addindent='\t', newl='\n', encoding="utf-8") def main(): writexml() if __name__ == '__main__': main()