Python XML解析:综合指南
XML(可扩展标记语言)是一种用于存储和传输数据的流行语言。Python 提供了几个库来解析 XML。在本指南中,我们将向你介绍两个用于解析 XML 的内置 Python 库:xml.dom.minidom 和 xml.etree.ElementTree。
第1步:使用xml.dom.minidom进行XML解析
xml.dom.minidom 库允许你用 Python 解析 XML 文档。要解析一个 XML 字符串,使用 parseString 方法:
from xml.dom.minidom import parseString
xml_string = """
<library>
<book>
<title>The Great Gatsby</title>
<author>F. Scott Fitzgerald</author>
<year>1925</year>
</book>
</library>
"""
document = parseString(xml_string)
print(document.getElementsByTagName("title")[0].firstChild.nodeValue)
在上面的代码中,我们解析了XML字符串并提取了书名。
第2步:使用xml.etree.ElementTree对XML进行解析
xml.etree.ElementTree(ET)库提供了一种更加Pythonic的方式来解析XML。要解析一个XML字符串,使用fromstring方法:
import xml.etree.ElementTree as ET
xml_string = """
<library>
<book>
<title>The Great Gatsby</title>
<author>F. Scott Fitzgerald</author>
<year>1925</year>
</book>
</library>
"""
root = ET.fromstring(xml_string)
for child in root.iter():
if child.text.strip():
print(child.text)
在上面的代码中,我们解析了XML字符串,并打印了每个元素的文本。
第3步:解析XML文件
minidom和ElementTree都可以使用parse方法从文件中解析XML:
# Using minidom
from xml.dom.minidom import parse
document = parse("sample.xml")
print(document.getElementsByTagName("title")[0].firstChild.nodeValue)
# Using ElementTree
import xml.etree.ElementTree as ET
root = ET.parse("sample.xml")
for child in root.iter():
if child.text.strip():
print(child.text)
上面的代码演示了如何解析一个XML文件并打印一些元素。
第4步:将XML数据保存为CSV文件
在解析了XML之后,你可以使用pandas库将数据保存到CSV文件中:
import pandas as pd
parsed_dict = {
"title": ["The Great Gatsby"],
"author": ["F. Scott Fitzgerald"],
"year": [1925]
}
df = pd.DataFrame(parsed_dict)
df.to_csv("parsed_xml_data.csv", index=False)
第5步:处理无效的XML
Beautiful Soup库可以解析可能存在错误的XML文档:
from bs4 import BeautifulSoup
invalid_xml = """
<root>
<person>
<name>John Doe</name>
<message>This is a message & an invalid XML example.</message>
</person>
</root>
"""
soup = BeautifulSoup(invalid_xml, features="lxml-xml")
print(soup.prettify())
Beautiful Soup可以处理无效的XML,但它比其他XML解析库要慢。
评论 (0)
这里还没有评论,你可以成为第一个评论者!