Python使用xml.dom解析xml
在菜鸟教程上找了个关于电影信息的xml类型的文档,用python内置的xml.dom来解析提取一下信息。
先复习一下xml概念:
- XML 指可扩展标记语言(EXtensible Markup Language)
- XML 是一种标记语言,很类似 HTML
- XML 的设计宗旨是传输数据,而非显示数据
- XML 被设计为具有自我描述性。
- XML 是 W3C 的推荐标准
解析工具:
文件对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口。
解析原理:一个 DOM 的解析器在解析一个 XML 文档时,一次性读取整个文档,把文档中所有元素保存在内存中的一个树结构里,之后可以利用DOM 提供的不同的函数来读取或修改文档的内容和结构,也可以把修改过的内容写入xml文件。
XML代码如下
目录层次:
collect shelf
movie title
xxxx
xxxx

Python解析代码
from xml.dom.minidom import parse
import xml.dom.minidom #使用Minidom解析器打开xml文档
DOMTree = xml.dom.minidom.parse("mov.xml")
collection = DOMTree.documentElement
if collection.hasAttribute("shelf"):
print("Root element : %s " % collection.getAttribute("shelf")) #self.getElementsByTagName("xx")取下级
#在集合里面获取所有电影
movies = collection.getElementsByTagName("movie") #打印每部电影的详细信息
for movie in movies:
print("********movies*********")
if movie.hasAttribute("title"):
print("title : %s" % movie.getAttribute("title")) type = movie.getElementsByTagName("type")[0]
print("type : %s" % type.childNodes[0].data) format = movie.getElementsByTagName("format")[0]
print("Format : %s" % format.childNodes[0].data) #有些电影里不一定有year这条信息,用if语句不会导致报错
if movie.getElementsByTagName("year"):
year = movie.getElementsByTagName("year")[0]
print("year : %s" % year.childNodes[0].data) if movie.getElementsByTagName("episodes"):
episodes = movie.getElementsByTagName("episodes")[0]
print("episodes : %s" % episodes.childNodes[0].data) rating = movie.getElementsByTagName("rating")[0]
print("rating : %s" % rating.childNodes[0].data) stars = movie.getElementsByTagName("stars")[0]
print("stars : %s" % stars.childNodes[0].data) description = movie.getElementsByTagName("description")[0]
print("description : %s" % description.childNodes[0].data)
输出结果:
Root element : New Arrivals
********movies*********
title : Enemy Behind
type : War, Thriller
Format : DVD
year : 2003
rating : PG
stars : 10
description : Talk about a US-Japan war
********movies*********
title : Transformers
type : Anime, Science Fiction
Format : DVD
year : 1989
rating : R
stars : 8
description : A schientific fiction
********movies*********
title : Trigun
type : Anime, Action
Format : DVD
episodes : 4
rating : PG
stars : 10
description : Vash the Stampede!
********movies*********
title : Ishtar
type : Comedy
Format : VHS
rating : PG
stars : 2
description : Viewable boredom
Python使用xml.dom解析xml的更多相关文章
- python 解析XML python模块xml.dom解析xml实例代码
分享下python中使用模块xml.dom解析xml文件的实例代码,学习下python解析xml文件的方法. 原文转自:http://www.jbxue.com/article/16587.html ...
- Python—使用xm.dom解析xml文件
什么是DOM? 文件对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口. 一个 DOM 的解析器在解析一个 XML 文档时,一次性读 ...
- 简单谈谈dom解析xml和html
前言 文件对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口.html,xml都是基于这个模型构造的.这也是一个W3C推出的标准.j ...
- Android之DOM解析XML
一.DOM解析方法介绍 DOM是基于树形结构的节点或信息片段的集合,允许开发人员使用DOM API遍历XML树,检索所需数据.分析该结构通常需要加载整个文档和构造树形结构,然后才可以检索和更新节点信息 ...
- JAVA中使用DOM解析XML文件
XML是一种方便快捷高效的数据保存传输的格式,在JSON广泛使用之前,XML是服务器和客户端之间数据传输的主要方式.因此,需要使用各种方式,解析服务器传送过来的信息,以供使用者查看. JAVA作为一种 ...
- Java从零开始学四十二(DOM解析XML)
一.DOM解析XML xml文件 favorite.xml <?xml version="1.0" encoding="UTF-8" standalone ...
- xml语法、DTD约束xml、Schema约束xml、DOM解析xml
今日大纲 1.什么是xml.xml的作用 2.xml的语法 3.DTD约束xml 4.Schema约束xml 5.DOM解析xml 1.什么是xml.xml的作用 1.1.xml介绍 在前面学习的ht ...
- Java解析XML文档(简单实例)——dom解析xml
一.前言 用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object ...
- xml--通过DOM解析XML
此文章通过3个例子表示DOM方式解析XML的用法. 通过DOM解析XML必须要写的3行代码. step 1: 获得dom解析器工厂(工作的作用是用于创建具体的解析器) step 2:获得具体的dom解 ...
随机推荐
- Orace 12.2 ORA-12012: error on auto execute of job "SYS"."ORA$AT_OS_OPT_SY_21"
一个测试环境的12.2.0.1数据库后台alert不断报出以下错误信息: Errors in file /d12/app/oracle/diag/rdbms/test/test/trace/test_ ...
- shiny: Web Application Framework for R
shiny: Web Application Framework for R 基于R语言的一个web框架,适用于数据分析与图表绘画展示类型的网站.
- Node入门教程(12)第十章:Node的HTTP模块
Ryan Dahl开发node的初衷就是:把Nginx非阻塞IO功能和一个高度封装的WEB服务器结合在一起的东东.所以Node初衷就是为了高性能的Web服务器去的,所以:Node的HTTP模块也是核心 ...
- MT7601 WG209模块驱动移植,并连接路由器
驱动位置: https://github.com/Aplexchenfl/WG209_MT7601 下载之后,查看 Makefile 在这里,我修改了 kernel的位置以及编译器的版本 执行 mak ...
- 教你一招:使用最快速的方式激活windows10专业版
1.安装win10专业版 2.在桌面新建“文本文档.txt” 3.复制如下代码到新新建的“文本文档.txt”中 slmgr /ipk VK7JG-NPHTM-C97JM-9MPGT-3V66T slm ...
- VMware 虚拟机磁盘
创建磁盘时,会进行两个操作:分配空间.置零 1.厚置备延迟置零: 默认的创建格式,创建磁盘时,直接从磁盘分配空间,但对磁盘保留数据不 置零.所以当有I/O操作时,只需要做置零的操作. 磁盘性能较好,时 ...
- 0x800f0845 更新1803报错
Windows 10累积更新KB4056892可能并不兼容AMD处理器,采用AMD Athlon 64 X2处理器的设备至少存在两起报告.
- [Bayes] Parameter estimation by Sampling
虽然openBugs效果不错,但原理是什么呢?需要感性认识,才能得其精髓. Recall [Bayes] prod: M-H: Independence Sampler firstly. 采样法 Re ...
- [Converge] Batch Normalisation
参考:https://www.zhihu.com/question/38102762 参考:CNN和RNN中如何引入BatchNorm 论文:Batch Normalization: Accelera ...
- [PHP] 04 - Upload files
PHP date() 函数 参数定义了格式 <?php echo date("Y/m/d") . "<br>"; echo date(&quo ...