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


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

    1. 读取 XML 文件:
    import xml.etree.ElementTree as ET
    
    # 读取 XML 文件
    tree = ET.parse('example.xml')
    root = tree.getroot()
    
    # 打印根元素的标签
    print(root.tag)
    
    1. 遍历 XML 树:
    # 遍历 XML 树
    for child in root:
        print(child.tag, child.attrib)
        for subchild in child:
            print(subchild.tag, subchild.text)
    
    1. 查找特定元素:
    # 查找特定元素
    for element in root.findall('element_name'):
        print(element.tag, element.attrib)
        for subelement in element:
            print(subelement.tag, subelement.text)
    
    1. 获取元素的属性和文本:
    # 获取元素的属性和文本
    for element in root.iter('element_name'):
        print('Attribute:', element.get('attribute_name'))
        print('Text:', element.text)
    
    1. 修改 XML 文件:
    # 修改元素的文本
    for element in root.iter('element_name'):
        element.text = 'new text'
    
    # 保存修改后的 XML 文件
    tree.write('modified_example.xml')
    
    1. 创建新的 XML 文件:
    # 创建新的 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 内容如下:

    <root>
        <child name="child1">
            <subchild>subchild1subchild>
        child>
        <child name="child2">
            <subchild>subchild2subchild>
        child>
    root>
    

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

    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 文件,遍历其内容并提取信息。根据具体需求,可以进一步修改和扩展解析逻辑。

  • 相关阅读:
    Flink中RPC实现原理简介
    golang:context
    字符串左旋 与 字符串旋转结果
    c++:蓝桥杯中的基础算法1(枚举,双指针)
    (没学懂,待填坑)【动态规划】数位动态规划
    dwg转换pdf怎么转换?
    前端总结44.JS面向对象基础(下)
    SpringBoot
    错误解决:Process finished with exit code 132 (interrupted by signal 4: SIGILL)
    4.后端·新建子模块与开发(传统模式)
  • 原文地址:https://blog.csdn.net/bifengmiaozhuan/article/details/140340390