1、 XML:指可扩展标记语言,是一种标记语言,用于存储数据和传输数据,但没有像HTML那样具有预定义标签,需要程序猿自定义标签

2、 XML的解析:读取XML数据结构中的某些信息,比如读取书的属性

3、 XML注释格式为:

<!—注释内容-->

4、 CDATA指不应由XML解析器进行解析的文本数据

<![CDATA[“我自己的代码”]]>

5、 Python解析XML的是三种方法

(1) SAX 逐行解析

(2) DOM 对象,一次性读取全部,将内存存储到内存中,将XML存成一棵树

(3) ElementTree

6、 Doc.toxml() 获取xml文档函数,也就是文档内容

7、 xml.dom解析xml常用api

Minidom.parse: 该函数的作用是使用parse解析器打开xml文档,并将其解析为DOM文档,也就是内存中的一棵树,并得到这个DOM对象。

 
 

8、 node.hasAttribute()判断属性在不在

9、 node.hasAttribute()获取节点的某个属性值

10、 doc.documentElement获取xml文档对象,就是拿到DOM树的根

11、 node.getElementsByTagName(name)获取XML文档中某个父节点下具有相同节点名的节点对象集合,是一个list对象。

12、 hasChildNodes()判断是否存在叶子结点

 

13、 node.childNodes返回节点node下所有子节点组成的list

 

节点:0,2,4,6是回车文本节点;1,3,5是标签节点

 
 

 
#练习:自定义一个xml文件,包含数据库的ip地址,用户名、密码和数据库名称,将它从xml中读取出来,放到一个List里面
from xml.dom.minidom import parse
 
domtree=parse("e:\ip.xml")
 
treelist=domtree.documentElement
ipaddress=treelist.getElementsByTagName("ip")
 
lst=[]
for i in range(1,6,2):
    tag_name=ipaddress[0].childNodes[i].tagName
    tag_content=ipaddress[0].childNodes[i].childNodes[0].data
    lst.append(tag_name+":"+tag_content)
print lst
for i in lst:
    print i
 
 
#练习:xml解析
#从xml.dom.minidom模块引入解析器parse
from xml.dom.minidom import parse
 
#minidom解析器打开xml文档并将其解析为内存中的一棵树
DOMTree = parse(r"e:\test.xml")
print type(DOMTree) #instance对象
 
#获取xml文档对象,就是拿到树的根
booklist = DOMTree.documentElement  #DOM对象
print u"DOM树的根对象:",booklist
 
if booklist.hasAttribute("type") :
  #判断根节点booklist是否有type属性
  print u"booklist元素存在type属性"
else :
  print u"booklist元素不存在type属性"
 
if booklist.hasAttribute("type") :
   #判断根节点booklist是否有type属性,有则获取并打印属性的值
  print "Root element is", booklist.getAttribute("type")
print type(booklist.getAttribute("type"))
 
print u"xml文档内容:\n%s" %DOMTree.toxml()
 
#获取booklist对象中所有book节点的list集合
books = booklist.getElementsByTagName("book")
print type(books)
print books
 
print "*"*30
 
#获取booklist对象中所有author节点的list集合
author=booklist.getElementsByTagName("author")
print author
 
print "*"*30
 
#获取所有子节点
print books[0].childNodes
 
print "*"*30
 
#获取节点名称和文本放到一个字典中
d={}
for i in range(1,6,2):
    tag_name =  books[1].childNodes[i].tagName
    d[tag_name] = books[1].childNodes[i].childNodes[0].data
print d
 
for k,v in d.items():
    print k,v
 
print "*"*30
 
books = booklist.getElementsByTagName("book")
print u"book节点的个数:", books.length
print books[0]
if books[0].hasChildNodes():
  print u"存在叶子节点\n", books[0].childNodes
else :
  print u"不存在叶子节点"
 
print "*"*30
 
#练习:xml解析
from xml.dom.minidom import parse
import xml.dom.minidom
# 使用minidom解析器打开 XML 文档
DOMTree = xml.dom.minidom.parse(r"e:\\movie.xml")
collection = DOMTree.documentElement
if collection.hasAttribute("shelf"):
   print "Root element : %s" % collection.getAttribute("shelf")
# 在集合中获取所有电影
movies = collection.getElementsByTagName("movie")
# 打印每部电影的详细信息
for movie in movies:
    print "*****Movie*****"
    if movie.hasAttribute("title"):
        print "Title: %s" % movie.getAttribute("title")
 
    type = movie.getElementsByTagName('type')[0] #[0]表示第一个title标签,因为一个<book>...</book>之间可能会
                                                 #定义多个title标签
    print "Type: %s" % type.childNodes[0].data
 
    format = movie.getElementsByTagName('format')[0]
    print "Format: %s" % format.childNodes[0].data
 
    rating = movie.getElementsByTagName('rating')[0]
    print "Rating: %s" % rating.childNodes[0].data
 
    description = movie.getElementsByTagName('description')[0]
    print "Description: %s" % description.childNodes[0].data

【Python】xml 解析的更多相关文章

  1. Python XML解析(转载)

    Python XML解析 什么是XML? XML 指可扩展标记语言(eXtensible Markup Language). 你可以通过本站学习XML教程 XML 被设计用来传输和存储数据. XML是 ...

  2. Python XML解析之ElementTree

    参考网址: http://www.runoob.com/python/python-xml.html https://docs.python.org/2/library/xml.etree.eleme ...

  3. python大法好——Python XML解析

    Python XML解析 什么是XML? XML 被设计用来传输和存储数据. XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识. 它也是元标记语言,即定义了用于定义其他与 ...

  4. Python XML解析之DOM

    DOM说明: DOM:Document Object Model API DOM是一种跨语言的XML解析机制,DOM把整个XML文件或字符串在内存中解析为树型结构方便访问. https://docs. ...

  5. Python XML解析

    什么是XML? XML 指可扩展标记语言(eXtensible Markup Language). 你可以通过本站学习XML教程 XML 被设计用来传输和存储数据. XML是一套定义语义标记的规则,这 ...

  6. Python XML 解析

    什么是 XML? XML 指可扩展标记语言(eXtensible Markup Language). XML 被设计用来传输和存储数据. XML 是一套定义语义标记的规则,这些标记将文档分成许多部件并 ...

  7. Python XML 解析Ⅱ

    make_parser方法 以下方法创建一个新的解析器对象并返回. 参数说明: parser_list - 可选参数,解析器列表 parser方法 以下方法创建一个 SAX 解析器并解析xml文档: ...

  8. Python XML解析和处理

    movies.xml <collection shelf = "New Arrivals"> <movie title = "Enemy Behind& ...

  9. Python xml 解析百度糯米信息

    先利用爬虫利用百度糯米提供的api来采集北京当天的团购信息,保存为numi.html import xml.etree.ElementTree as ET import os class Nuomi( ...

  10. 面试官问我:如何在 Python 中解析和修改 XML

    摘要:我们经常需要解析用不同语言编写的数据.Python提供了许多库来解析或拆分用其他语言编写的数据.在此 Python XML 解析器教程中,您将学习如何使用 Python 解析 XML. 本文分享 ...

随机推荐

  1. hdu-5889-最短路+网络流/最小割

    Barricade Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total S ...

  2. js时间与时间戳互相转换

    var _time1 = Date.parse(new Date(‘2017-05-02 00:00:00’))/1000; //将设定的日期转换为时间戳 _time1 = getLocalTime( ...

  3. MinGW安装教程( MinGW - Minimalist GNU for Windows)

    首先说明一下 1) MinGw只是其中一种GCC编译环境的安装程序,还有像Cygwin也是差不多的; 2) 还要就是安装MinGw,最好在一个网络比较好的环境中进行,  (有可能导致后来安装其他软件像 ...

  4. Maven插件系列之spring-boot-maven-plugin

    Spring Boot的Maven插件(Spring Boot Maven plugin)能够以Maven的方式为应用提供Spring Boot的支持,即为Spring Boot应用提供了执行Mave ...

  5. 这些你都了解么------程序员"跳槽"法则

    篇头语: “跳槽”这个词是从我报了"软件工程"这个专业后就已经开始听说的词了, 在大学中老师上课也会常说:“等你们参加工作以后,工资低不怕,没事就跳槽,之后工资就高了”: 我相信听 ...

  6. AIX安装JDK1.7教程

    1.下载 下载链接(下载需要登录IBM账号):https://www.ibm.com/developerworks/java/jdk/aix/service.html#i1 由于jdk版本AIX操作系 ...

  7. 3.python函数编程-reduce函数

    reduce将所有数据压缩到一起,得到一个最终的结果. 在python2中可以直接使用,在python3中需要导入 from functools import reduce 自己实现代码: num = ...

  8. 【oracle】一些的常用命令

    命令行连接oracle sqlplus  回车 分别输入用户名和密码 命令行重启oracle数据库 sqlplus /nolog conn 账号/密码 as sysdba shutdow immedi ...

  9. 输出链表的倒数第K个值

    题目描述 输入一个链表,输出该链表中倒数第k个结点.   思路一:链表不能向前遍历,只能向后遍历.因此倒数第K个结点就是 正序的  :len(链表)-1-K的下一个.  注意,此处的思路与代码中具体实 ...

  10. 每天CSS学习之box-shadow

    box-shadow是CSS3的属性,目的是给盒子添加一个或多个阴影.怎么感觉有点像光明使者使用该法术照亮敌人的阴暗面? box-shadow一共有六个属性,请看: box-shadow: h-sha ...