python 模块 xml

2021/5/22 22:55:11

本文主要是介绍python 模块 xml,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1、xml包中的四个子包

  • Python的核心XML支持。
  • xml包的说明文档:https://docs.python.org/zh-cn/3.7/library/xml.html

1、dom包

  • Document Object Model。适合用于处理DOM API。它能够将XML数据在内存中解析成一个树,然后通过对树的操作来操作XML。但是这种方式由于将XML数据映射到内存中的树,导致比较慢,且消耗更多内存。
  • DOM的解析器在解析一个XML文档时,一次性读取整个文档,如果要处理的XML文本比较大的话,就会很耗内存,所以DOM一般偏向于处理一些小的XML,(如配置文件)比较快。
  • dom中的模块
    • xml.dom:DOM API定义
    • xml.dom.minidom:最小的DOM实现
    • xml.dom.pulldom:支持构建部分DOM树

2、SAX(simple API for XML)

  • Python标准库中包含SAX解析器,SAX是用的是事件驱动模型,通过在解析XML过程中触发一个个的事件并调用用户定义的回调函数来处理XML文件。
  • 解析的基本过程:读到一个XML开始标签,就会开始一个事件,然后事件就会调用一系列的函数去处理一些事情,当读到一个结束标签时,就会触发另一个事件。所以,我们写XML文档入如果有格式错误的话,解析就会出错。
  • 由于SAX以流式读取XML文件,一边读一边解析,速度较快,占用内存少,但是在操作上稍微复杂,需要用户实现回调函数。
  • 适用场景如下:
    • 1、对大型xml文件进行处理;
    • 2、只需要文件的部分内容,或者只需从文件中得到特定信息。
    • 3、想建立自己的对象模型的时候。

3、parsers包

  • 用于XML解析器的Python包装器(目前只支持Expat)。
  • xml.parsers.expat:Expat解析器绑定

4、etree包

  • ElementTree XML库。这是完整ElementTree XML版本的一个子集。
  • xml.etree.ElementTree: ElementTree API,一个简单而轻量级的XML处理器

2、etree包解析xml

  •  xml.etree.ElementTree模块实现了一个简单高效的API,用于解析和创建XML数据。
  • xml.etree.ElementTree模块对于恶意构建的数据是不安全的。如果需要解析不可信或未经身份验证的数据,请参见XML漏洞。

1、XML树和元素

  • XML是一种固有的分层数据格式,最自然的表示方法是使用树。为此,ET有两个类:ElementTree将整个XML文档表示为一个树,Element表示该树中的单个节点。与整个文档的交互(读写文件)通常在ElementTree级别完成。与单个XML元素及其子元素的交互是在Element级别完成的。

1、遍历xml文件

 

 

 

示例:

import xml.etree.ElementTree as ET

tree = ET.parse("xmltest.xml")
root = tree.getroot()
#print(root)#<Element 'data' at 0x0000024CD0FF70E0>

nodelst = []
def xmlread(root_node, level):
    note = [level, root_node.tag, root_node.attrib, root_node.text]
    nodelst.append(note)
    child_node = list(root_node)
    # print(child_node)#[<Element 'country' at 0x000001B53D1C61D0>, <Element 'country' at 0x000001B53D1E9360>, <Element 'country' at 0x000001B53D1E94F0>]
    if len(child_node) == 0:
        return
    for child in child_node:
        xmlread(child, level + 1)

level = 1
xmlread(root, level)

for i in nodelst:
    print(i)

  

 



这篇关于python 模块 xml的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程