Python XML 格式化教程与方法详解

更新时间:2024-05-05 01:52:20   人气:9539
在编程领域中,XML(eXtensible Markup Language)是一种广泛使用的结构化数据格式。它允许开发者以一种清晰且可读的方式来表示和传输复杂的数据集,并被多种语言支持解析及生成,其中就包括强大的脚本语言——Python。

**一、理解 Python 中的 XML**

Python 提供了多个库来处理 XML 数据,如 `xml.etree.ElementTree` 和第三方库 lxml 等。ElementTree 是标准库的一部分,提供了解析、修改以及创建 XML 文档的功能。

1. **解析 XML 文件**
python

import xml.etree.ElementTree as ET

tree = ET.parse('example.xml')
root = tree.getroot()

# 遍历所有元素节点并打印标签名
for child in root:
print(child.tag)


2. **访问 XML 元素属性与文本内容**
解析后的每个 XML 节点都代表一个 Element 对象,可以获取其属性或包含的文字:

python

for element in root.findall('.//item'):
name = element.find('name').text # 获取子元素 'name' 的文字内容
value = element.attrib['value'] # 获取当前元素的 attribute 值

print(f"Name: {name}, Value: {value}")


3. **构建 & 写入新的 XML 结构**
同样地,我们也可以使用 ElementTree 创建新文档:

python

from xml.dom.minidom import Document

doc = Document()
person_node = doc.createElement("person")

name_attr = doc.createAttribute("name")
name_attr.value = "John Doe"
person_node.setAttributeNode(name_attr)

age_child = doc.createTextNode("30")
person_node.appendChild(age_child)

doc.appendChild(person_node)
with open('output.xml', 'w') as f:
f.write(doc.toprettyxml())


4. **美化输出 (Format/Indentation)**

如果需要对生成或者已解析的 XML 进行美观化的格式排版输出,可以通过调用相关函数实现:

python

indent_amount = "\t"
rough_string = ET.tostring(root, encoding='utf-8')

reparsed = minidom.parseString(rough_string).toprettyxml(indent=indent_amount)
with open('formatted_output.xml','wb') as file_to_write:
file_to_write.write(reparsed.encode(xml.Encoding.UTF_8))


通过以上示例可以看出,在Python中操作XML文件既直观又灵活。无论是从现有的XML提取信息还是构造全新的XML结构,都可以借助于内建模块及其丰富的方法轻松完成任务。而对于更复杂的XPath查询以及其他高级特性需求,则可能需要用到更为强大高效的lxml等外部扩展库进行进一步探索实践。