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. sscanf(),sscanf_s()的相关用法

    #include<stdio.h> 定义函数 int sscanf (const char *str,const char * format,........); 函数说明  sscanf ...

  2. 牛客第二场A-run

    链接:https://www.nowcoder.com/acm/contest/140/A 来源:牛客网 White Cloud is exercising in the playground. Wh ...

  3. Physical Limits of ASM

    Oracle version 7, only 1,022 datafiles per database could be used.  Oracle version 11g, support 65,5 ...

  4. 【转】jquery.validate.js表单验证

    一.用前必备官方网站:http://bassistance.de/jquery-plugins/jquery-plugin-validation/ API: http://jquery.bassist ...

  5. memory prefix inter,intra,intro,iso out 5

    1● inter 在~之间:相互   2● intra 3● iso 等 同   4● intro 向内,在内,内部  

  6. LY.JAVA面向对象编程.final、多态、抽象类、接口

    2018-07-08    13:47:26 final关键字 多态 从右向前念 多态的成员访问特点及转型的理解 多态的问题理解: class 孔子爹 { public int age = 40; p ...

  7. linux的命令:

    uname -r  linux的版本号 uname -a  显示系统名.节点名称.操作系统的发行版号.操作系统版本.运行系统的机器 ID 号 cd /dev/ 切换到根目录: ls 查看根目录文件

  8. linux文件管理 文件搜索

    文件搜索命令find 'find [搜索范围] [搜索条件]' 搜索文件 find / -name install.log #避免大范围搜索,会非常消耗系统资源 #find是在系统当中搜索符合条件的文 ...

  9. day12 生成器和各种推导式

    今天主要学习了 1.生成器 2.生成器函数 3.各种推导式(比较诡异,理解了很简单,不理解很难) 4.生成器表达式(重点) 一.生成器 def func(): print'我叫周润发' return ...

  10. springMVC操作cookie和session

    cookie相关说明: 1.cookie由服务器端创建,然后添加到HttpServletResponse中发送给客户端(浏览器). 2.可以添加多个cookie键值对. 3.cookie由键值名和键值 ...