python3 xml tree

wd404 / 2023-05-07 / 原文

Python3 XML 解析 | 菜鸟教程 (runoob.com)

1、介绍

通过python3自带的xml.etree.ElementTree模块可以实现对xml的操作。

XML是一种固有的分层数据格式,也是用一棵树来表示它。为此,本模块分为两个类:

  • ElementTree将整个XML文档表示为一个树
  • Element表示该树中的单个节点

与整个文档的交互(读取和写入文件)通常在ElementTree级别上完成。与单个XML元素和其子元素的交互是在元素级别上完成的。

元素是一个灵活的容器对象,设计用于存储分层数据,它可以被描述为列表和词典,每个元素都有多个与其关联的属性:

  • “tag”-包含元素名称的字符串。
  • “attributes”-存储元素属性的Python字典。
  • “text”-包含元素的文本内容的字符串。
  • “tail”-一个可选字符串,在元素的结束标记后包含文本。
  • 以及存储在Python序列中的许多子元素。

要创建元素实例,请使用element构造函数,或子元素工厂功能。

2、ElementTree类

对应整个xml结构。

2.1 初始化

class ElementTree:
    def __init__(self, element=None, file=None):
  • element,str类型,根节点的名称
  • file,str类型,xml文件

2.2 方法

(1)getroot

def getroot(self):
  • 返回根节点

(2)parse

def parse(self, source, parser=None):
  • 解析

(3)iter

def iter(self, tag=None):
  • 对子节点迭代

(4)find

def find(self, path, namespaces=None):

(5)findtext

def findtext(self, path, default=None, namespaces=None):

(6)findall

def findall(self, path, namespaces=None):

(7)iterfind

def iterfind(self, path, namespaces=None):

(8)write

def write(self, file_or_filename,
          encoding=None,
          xml_declaration=None,
          default_namespace=None,
          method=None, *,
          short_empty_elements=True):
  • 将本对象写入文件中
  • encoding,str类型,即写入文件的编码,一般设为'utf-8'
  • xml_declaration,bool类型,为True会在首行写入xml声明

3、Element类

对应节点

3.1 初始化

class Element:
    tag = None
    attrib = None
    text = None
    tail = None
    def __init__(self, tag, attrib={}, **extra):

 3.2 方法

def makeelement(self, tag, attrib):

 

def copy(self):

 

def append(self, subelement):

 

def extend(self, elements):

 

def insert(self, index, subelement):

 

def remove(self, subelement):

 

def find(self, path, namespaces=None):

 

def findtext(self, path, default=None, namespaces=None):

 

def findall(self, path, namespaces=None):

 

def iterfind(self, path, namespaces=None):

 

def get(self, key, default=None):

 

def set(self, key, value):

 

def keys(self):

 

def items(self):

 

def iter(self, tag=None):

 

def itertext(self):

4、parse函数

def parse(source, parser=None):
    tree = ElementTree()
    tree.parse(source, parser)
    return tree
  • 作用是解析成ElementTree对象
  • source,可以是一个文件路径,str类型。也可以是一个文件对象
  • parser,解析模式,非必要参数