zoukankan      html  css  js  c++  java
  • 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/

  • 相关阅读:
    Pod镜像拉取策略imagePullPolicy
    部署helm服务
    查看k8s中etcd数据
    k8s RBAC实践
    部署k8s集群监控Heapster
    编译k8s1.11 kube-apiserver源码
    阿里云跨地域访问私网
    阿里云ECS搭建harbor1.6.1仓库
    JavaScript
    前端之网络协议、浏览器
  • 原文地址:https://www.cnblogs.com/lsdb/p/10150492.html
Copyright © 2011-2022 走看看