参考文章: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()
View Code

相关文章:

  • 2021-09-02
  • 2021-09-07
  • 2022-12-23
  • 2022-12-23
  • 2022-01-02
  • 2021-10-20
猜你喜欢
  • 2021-05-19
  • 2022-12-23
  • 2021-11-23
  • 2021-08-29
  • 2021-08-26
相关资源
相似解决方案