Python中的XML解析库有哪些
发布时间:2024-01-04 06:30:15
在Python中,有以下几种常用的XML解析库:ElementTree、lxml、xml.dom、xml.sax。下面将分别介绍这几种库的使用方法,并给出相应的例子。
1. ElementTree:
ElementTree是Python的内置库,提供了一个简单的API来解析和操作XML文件。
import xml.etree.ElementTree as ET
# 解析XML文件
tree = ET.parse('data.xml')
root = tree.getroot()
# 遍历XML元素
for child in root:
print(child.tag, child.attrib)
# 访问元素的文本内容
for elem in tree.iter():
if elem.text is not None:
print(elem.text)
# 修改元素的属性和文本内容
for elem in tree.iter('name'):
elem.attrib['attr'] = 'new_attr'
elem.text = 'new_text'
# 保存修改后的XML文件
tree.write('output.xml')
2. lxml:
lxml是Python的一个高性能的XML解析库,基于C语言实现,提供了更多的功能和速度优势。
from lxml import etree
# 解析XML文件
tree = etree.parse('data.xml')
root = tree.getroot()
# 遍历XML元素
for elem in root.iter():
print(elem.tag, elem.attrib)
# 访问元素的文本内容
for elem in tree.iter():
if elem.text is not None:
print(elem.text)
# 修改元素的属性和文本内容
for elem in tree.iter('name'):
elem.attrib['attr'] = 'new_attr'
elem.text = 'new_text'
# 保存修改后的XML文件
tree.write('output.xml', pretty_print=True)
3. xml.dom:
xml.dom是Python的内置库,提供了一种基于DOM(Document Object Model)的XML解析方式。
from xml.dom import minidom
# 解析XML文件
doc = minidom.parse('data.xml')
# 获取根节点
root = doc.documentElement
# 遍历XML元素
nodes = root.childNodes
for node in nodes:
if node.nodeType == node.ELEMENT_NODE:
print(node.tagName, node.attributes.items())
# 访问元素的文本内容
texts = doc.getElementsByTagName('text')
for text in texts:
print(text.firstChild.data)
# 修改元素的属性和文本内容
elems = doc.getElementsByTagName('elem')
for elem in elems:
elem.setAttribute('attr', 'new_attr')
elem.firstChild.data = 'new_text'
# 保存修改后的XML文件
with open('output.xml', 'w') as f:
doc.writexml(f, encoding='utf-8')
4. xml.sax:
xml.sax是Python的内置库,提供了一种基于事件驱动的XML解析方式。
import xml.sax
class MyHandler(xml.sax.ContentHandler):
def __init__(self):
self.current = ''
self.attr = {}
def startElement(self, name, attrs):
self.current = name
if attrs:
self.attr[self.current] = attrs.getQNames()
def characters(self, data):
if self.current == 'text':
print(data)
def endElement(self, name):
self.current = ''
parser = xml.sax.make_parser()
handler = MyHandler()
parser.setContentHandler(handler)
parser.parse('data.xml')
以上就是Python中常用的XML解析库的介绍和使用例子,根据实际需求和个人喜好,可以选择适合自己的库进行XML文件的解析和操作。
