• Python3将xml文件解析为Python对象


    一、说明

    从最开始写javascript开始,我就很烦感使用getElementById()等函数来获取节点的方法,获取了一个节点要访问其子孙节点要么child半天要么就再来一个getElementById(),这是智障吗?----所以我不喜欢beautiful soup(当然还因为他不支持xpath)。

    python的json标准库可以将json结果直接解析为python对象;python也提供了好几个标准库来解析xml,但我不是很明白为什么都是一些不能直接将xml解析为python对象的垃圾库。

    给一堆函数就叫功能强大吗,这次用了下次又得重新学简直脑残。

    类似json将xml解析为python对象,可以使用第三方库untangle或xmltodict实现。

    将以下内容保存为xml2obj.xml,后我我们就使用该文件。

    <?xml version="1.0"?>
    <root>
        <title>xml to python obj</title>
        <body>
            <section id="1">section1 content</section>
            <section id="2">section2 content</section>
        </body>
    </root>

    二、使用untangle将xml文件解析为python对象

    pip install untangle

     代码如下:

    import untangle
    
    # 将文件解析成对象
    obj = untangle.parse('xml2obj.xml')
    
    # 获取<title>标签内容
    obj.root.title.__dict__['cdata']
    
    # 获取第一个section标签
    obj.root.body.section[0]
    
    # 获取第二个section标签的id
    obj.root.body.section[1]['id']

    运行如下:

    三、使用xmltodict将xml文件解析为python对象

    pip install xmltodict

    代码如下:

    import xmltodict
    
    # 将xml文件解析成对象
    with open('xml2obj.xml') as fd:
        dict = xmltodict.parse(fd.read())
    
    # 获取<title>标签内容
    dict['root']['title']
    
    # 获取第一个section标签
    dict['root']['body']['section'][0]
    
    # 获取第二个section标签的id
    dict['root']['body']['section'][1]['@id']

    运行如下:

    参考:

    https://docs.python-guide.org/scenarios/xml/

  • 相关阅读:
    sql server 2005的分页函数ROW_NUMBER
    Silverlight 皮肤(主题)动态切换
    Silverlight 地图导航
    WPF模板概述(数据模板)
    Silverlight MVVM Prism WCF RIA项目框架
    多线程通中的AutoResetEvent与ManualResetEvent
    Silverlight 图形报表 线形图 柱形图 饼图
    WPF 重要新概念读书笔记(转)
    Net基本概念和原理
    数据库辅助工具SqlDbx
  • 原文地址:https://www.cnblogs.com/lsdb/p/10150492.html
Copyright © 2020-2023  润新知