Python面试题:如何在 Python 中解析 XML 文件?

在 Python 中解析 XML 文件可以使用内置的 xml.etree.ElementTree 模块。以下是一个示例,展示了如何使用这个模块解析 XML 文件:

  1. 读取 XML 文件:
python 复制代码
import xml.etree.ElementTree as ET

# 读取 XML 文件
tree = ET.parse('example.xml')
root = tree.getroot()

# 打印根元素的标签
print(root.tag)
  1. 遍历 XML 树:
python 复制代码
# 遍历 XML 树
for child in root:
    print(child.tag, child.attrib)
    for subchild in child:
        print(subchild.tag, subchild.text)
  1. 查找特定元素:
python 复制代码
# 查找特定元素
for element in root.findall('element_name'):
    print(element.tag, element.attrib)
    for subelement in element:
        print(subelement.tag, subelement.text)
  1. 获取元素的属性和文本:
python 复制代码
# 获取元素的属性和文本
for element in root.iter('element_name'):
    print('Attribute:', element.get('attribute_name'))
    print('Text:', element.text)
  1. 修改 XML 文件:
python 复制代码
# 修改元素的文本
for element in root.iter('element_name'):
    element.text = 'new text'

# 保存修改后的 XML 文件
tree.write('modified_example.xml')
  1. 创建新的 XML 文件:
python 复制代码
# 创建新的 XML 文件
root = ET.Element('root')
child = ET.SubElement(root, 'child')
child.text = 'child text'

tree = ET.ElementTree(root)
tree.write('new_example.xml')

下面是一个完整的示例,假设我们有一个 XML 文件 example.xml 内容如下:

xml 复制代码
<root>
    <child name="child1">
        <subchild>subchild1</subchild>
    </child>
    <child name="child2">
        <subchild>subchild2</subchild>
    </child>
</root>

解析这个文件并打印每个元素的信息:

python 复制代码
import xml.etree.ElementTree as ET

# 读取 XML 文件
tree = ET.parse('example.xml')
root = tree.getroot()

# 打印根元素的标签
print('Root tag:', root.tag)

# 遍历 XML 树
for child in root:
    print('Child tag:', child.tag, 'Attributes:', child.attrib)
    for subchild in child:
        print(' Subchild tag:', subchild.tag, 'Text:', subchild.text)

# 查找特定元素
for element in root.findall('child'):
    print('Found child tag:', element.tag, 'Attributes:', element.attrib)
    for subelement in element:
        print(' Subchild tag:', subelement.tag, 'Text:', subelement.text)

# 获取元素的属性和文本
for element in root.iter('child'):
    print('Attribute:', element.get('name'))
    for subelement in element:
        print('Text:', subelement.text)

这段代码会输出:

复制代码
Root tag: root
Child tag: child Attributes: {'name': 'child1'}
 Subchild tag: subchild Text: subchild1
Child tag: child Attributes: {'name': 'child2'}
 Subchild tag: subchild Text: subchild2
Found child tag: child Attributes: {'name': 'child1'}
 Subchild tag: subchild tag: subchild Text: subchild1
Found child tag: child Attributes: {'name': 'child2'}
 Subchild tag: subchild Text: subchild2
Attribute: child1
Text: subchild1
Attribute: child2
Text: subchild2

这个示例展示了如何解析 XML 文件,遍历其内容并提取信息。根据具体需求,可以进一步修改和扩展解析逻辑。

相关推荐
兵慌码乱21 小时前
基于 MediaPipe 与 PySide2 的手势交互音乐控制系统实现:轻量化视觉交互全流程解析
python·opencv·计算机视觉·人机交互·手势识别·mediapipe·pyside2
luckdewei1 天前
FastAPI 资产管理系统实战:复杂 ORM 关联、Alembic 迁移与 N+1 查询优化
python
蝎子莱莱爱打怪1 天前
XZLL-IM干货系列 03|消息 ID 设计:一个 UUID 搞不定的事,我用两个 ID 解决了
后端·面试·开源
梯度不陡1 天前
AI 到底能不能从零写软件?ProgramBench 和 RepoZero 给出了两种答案
前端·javascript·面试
胡萝卜术1 天前
滑动窗口最大值:从暴力到单调队列,层层优化全解析
前端·javascript·面试
沉默王二1 天前
面试结束后,我反问:“就面个实习至于上这么大强度吗?”面试官:“你对 RAG、Agent、MCP、Skill 理解得很到位,所以要求高一点。”
面试·agent·ai编程
aqi001 天前
15天学会AI应用开发(八)使用向量数据库实现RAG功能
人工智能·python·大模型·ai编程·ai应用
Csvn1 天前
`functools.lru_cache` —— 一行代码搞定缓存加速
后端·python
假如让我当三天老蒯1 天前
Options API(选项式 API) 和 Composition API(组合式 API)
前端·vue.js·面试