Python基础之读写xml总结
阅读原文时间:2023年07月10日阅读:1

参考文章:https://blog.csdn.net/weixin_42749767/article/details/82770563

先介绍xml.dom.minidom包,有一个读写的例子

read_write_xml.py

from xml.dom.minidom import parse
import xml.dom.minidom
import os

def is_xml_exist(xml_path):
xml_exist = os.path.exists(xml_path)
if not xml_exist:
return False
return True

"""
movie.xml
War, Thriller DVD 2003 PG 10 Talk about a US-Japan war Anime, Science Fiction DVD 1989 R 8 ¨C12C ¨C13C ¨C14C ¨C15C ¨C16C ¨C17C ¨C18C ¨C19C ¨C20C ¨C21C ¨C22C ¨C23C
"""

def read_movie_xml():
path = "movie.xml"
if not is_xml_exist(path):
print("%s is not exist" % path)
else:
# 使用minidom解析器打开XML文档
open_xml = parse(path)
root_node = open_xml.documentElement

    shelf\_attrib = "shelf"  
    if root\_node.hasAttribute(shelf\_attrib):  
        print("Lable: %s\\tAttrib: %s\\t\\tValue: %s" % (  
            root\_node.nodeName, shelf\_attrib, root\_node.getAttribute(shelf\_attrib)))  
    print("")  
    # 在集合中获取所有电影  
    movie\_node = "movie"  
    movies = root\_node.getElementsByTagName(movie\_node)

    # 打印每部电影的详细信息  
    for movie in movies:  
        print("\*\*\*\* Movie \*\*\*\*")  
        if movie.hasAttribute("title"):  
            print("Title: %s" % movie.getAttribute("title"))

        type\_movie = movie.getElementsByTagName('type')\[0\]  
        print("Type: %s" % type\_movie.childNodes\[0\].data)

        format\_movie = movie.getElementsByTagName('format')\[0\]  
        print("Format: %s" % format\_movie.childNodes\[0\].data)

        rating\_movie = movie.getElementsByTagName('rating')\[0\]  
        print("Rating: %s" % rating\_movie.childNodes\[0\].data)

        descrip\_movie = movie.getElementsByTagName('description')\[0\]  
        print("Rating: %s" % descrip\_movie.childNodes\[0\].data)

        print("")

if __name__ == "__main__":
read_movie_xml()

运行结果:

用到的知识点:

1. 导入xml包:

from xml.dom.minidom import parse

2. 打开xml文件:

open_xml = parse(path)
root_node = open_xml.documentElement

3. 获取节点名称:

root_node.nodeName

4. 判断节点属性是否存在:

root_node.hasAttribute(shelf_attrib)

5. 获取节点属性:

root_node.getAttribute(shelf_attrib)

6. 获取子节点对象:

root_node.getElementsByTagName(movie_node)

7. 获取文本节点的文本信息:

type_movie.childNodes[0].data

以上语句务必正确使用,运行第二步,xml必须已经存在,运行第六步,子节点的标签必须存在,运行第七步,此节点必须是文本节点,否则都会出现异常。

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章