python3 xml tree
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,解析模式,非必要参数