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解 ...
随机推荐
- Spring Boot 2.0 热部署指南
Spring Boot 2.0 支持热部署,实现方法很简单 Spring Boot 2.0 有几种热重载的选项. 推荐的方法是使用spring-boot-devtools 因为它提供了额外的开发时间功 ...
- android studio build.gradle 中的dependencies 的 compile jar文件
1.其下载之后的存放地址 例如:compile 'com.qiniu:happy-dns:0.2.5' 存放在:.gradle\caches\modules-\files-\c0ee826650468 ...
- PX4/PixHawk无人机飞控应用开发
最近做的一个国防背景的field UAV项目,细节不能多谈,简单写点技术体会. 1.PX4/Pixhawk飞控软件架构简介 PX4是目前最流行的开源飞控板之一.PX4的软件系统实际上就是一个firmw ...
- MongoDB T-shirt 来了
嘚瑟一下.
- 【WPF】点击滑动条(Slider),移动滑块(Tick)到鼠标点击的位置
问题:点击Slider控件时,滑块会自动跳到滑动条的最边缘位置,无法跳到鼠标点击的位置上. 办法:给Slider控件设置属性IsMoveToPointEnabled="True"即 ...
- 使用ActivityGroup需要注意的地方
Group里面的所有“孩子Activity”不能直接调用finish(),只能等ActivityGroup调用它自己的finish()后,会自动调用所有“孩子Activity”的finish().
- Java知多少(86)文本框和文本区的输入输出
在GUI中,常用文本框和文本区实现数据的输入和输出.如果采用文本区输入,通常另设一个数据输入完成按钮.当数据输入结束时,点击这个按钮.事件处理程序利用getText()方法从文本区中读取字符串信息.对 ...
- Java知多少(94)键盘事件
键盘事件的事件源一般丐组件相关,当一个组件处于激活状态时,按下.释放或敲击键盘上的某个键时就会发生键盘事件.键盘事件的接口是KeyListener,注册键盘事件监视器的方法是addKeyListene ...
- Git 修改远端仓库地址
方法有三种:1.修改命令git remote set-url origin [url] 例如:git remote set-url origin gitlab@gitlab.chumob.com:ph ...
- [Tensorflow] Cookbook - Retraining Existing CNNs models - Inception Model
From: https://github.com/jcjohnson/cnn-benchmarks#alexnet 先大概了解模型,再看如果加载pre-training weight. 关于retai ...