一、说明

从最开始写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/

Python3将xml文件解析为Python对象的更多相关文章

  1. Python实现XML文件解析

    1. XML简介 XML(eXtensible Markup Language)指可扩展标记语言,被设计用来传输和存储数据,已经日趋成为当前许多新生技术的核心,在不同的领域都有着不同的应用.它是web ...

  2. 基于 RTF specification v1.7 的 RTF 文件解析及 OLE 对象提取(使用 Python 开发)

    0x01 Office RTF 文件介绍 RTF 文件也称富文本格式(Rich Text Format, 一般简称为 RTF),意为多文本格式是由微软公司开发的跨平台文档格式.大多数的文字处理软件都能 ...

  3. 通过正则表达式实现简单xml文件解析

    这是我通过正则表达式实现的xml文件解析工具,有些XHTML文件中包含特殊符号,暂时还无法正常使用. 设计思路:常见的xml文件都是单根树结构,工具的目的是通过递归的方式将整个文档树装载进一个Node ...

  4. android基础知识13:AndroidManifest.xml文件解析

    注:本文转载于:http://blog.csdn.net/xianming01/article/details/7526987 AndroidManifest.xml文件解析. 1.重要性 Andro ...

  5. 9.XML文件解析

    一.XML简介 XML(EXtensible Markup Language),可扩展标记语言 特点:XML与操作系统.编程语言的开发平台无关 实现不同系统之间的数据交换 作用:数据交互 配置应用程序 ...

  6. java基础之概谈xml文件解析

    XML已经成为一种非常通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便. 诸多web应用框架,其可配置的编程方式,给我们的开发带来了非常大程度的便捷,但细细 ...

  7. XML文件解析之JDOM解析

    1.JDOM介绍 JDOM的官方网站是http://www.jdom.org/,JDOM解析用到的jar包可以在http://www.jdom.org/dist/binary/中下载,最新的JDOM2 ...

  8. Java XML文件解析

    四种生成和解析XML文档的方法详解(介绍+优缺点比较+示例) 蓝色字体内容由上一篇博文中补充进来的,写作风格比较好,大家有兴趣可以去查看原文 众所周知,现在解析XML的方法越来越多,但主流的方法也就四 ...

  9. 八、Android学习第七天——XML文件解析方法(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 八.Android学习第七天——XML文件解析方法 XML文件:exten ...

随机推荐

  1. C博客作业05--指针

    1. 本章学习总结 1.1 思维导图 1.2 本章学习体会及代码量学习体会 1.2.1 学习体会 这几周学习了指针,指针是C语言的一个重要的概念,也是特色之一.它可以通过对地址的访问来改变值,所以它的 ...

  2. 指定Gpu range系列函数

    tensorflow指定GPU训练 import os os.environ[CUDA_VISIABLE_DEVICES] = '0,1'记住DEVICES是复数 range()返回的是range o ...

  3. SHA256withRSA证书签名,私钥签名/公钥验签

    证书签名 package test; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundE ...

  4. h5完美实现无刷新上传并附带上传效果

    附带上传源码如下: <!DOCTYPE html> <html> <head> <title>测试上传功能</title> <meta ...

  5. 使用proces explorer查看系统gdi

    用mfc开发,使用双缓冲刷新屏幕时,可能会造成GDI的增长,当增长到一定数量[10000]时,软件会崩,可以通过 proces explorer来监测GDI,调试代码 打开proces explore ...

  6. allure --version 异常io.airlift.airline.ParseArgumentsUnexpectedException: Found unexpected parameter

    执行allure --version时,有时会出现如下异常: io.airlift.airline.ParseArgumentsUnexpectedException: Found unexpecte ...

  7. ORACLE数据库找回用户密码

    安装完oracle数据库后,登录时sys,system,scott这几个用户密码输入后都不对,查阅资料后解决 1,cmd下输入sqlplus,之后让你输入用户名,输入这个 "/as sysd ...

  8. sqllite中实现字符串分割

    WITH split(word, str) AS (    -- alternatively put your query here    -- SELECT '', category||',' FR ...

  9. Latex 仅使用 hyperref 包中 \href 的方法

    参考: How to ask hyperref works only with href Latex 仅使用 hyperref 包中 \href 的方法 在 .tex 文件的开头使用如下方法引用 hy ...

  10. 使用Mongo进行分页

    MongoDB’s pipeline aggregation is – like most things in application development these days – confusi ...