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. 关于react16.4——错误边界

    过去,组件内的 JavaScript 错误常常会破坏 React 内部状态,并导致它在下一次渲染时产生神秘的错误.这些错误总会在应用代码中较早的错误引发的,但 React 并没有提供一种方式能够在组件 ...

  2. mybatis批量插入的方式

    批量插入数据经常是把一个集合的数据一次性插入数据库,只需要执行一次sql语句,但是批量插入通常会报框架版本号的错误,本人就遇到 com.alipay.zdal.parser.exceptions.a: ...

  3. Linux 命令查询工具

    http://man.linuxde.net/traceroute http://man.linuxde.net/ping http://man.linuxde.net/nslookup 等等

  4. 压力测试之ab命令

    网站性能压力测试是服务器网站性能调优过程中必不可缺少的一环.只有让服务器处在高压情况下,才能真正体现出软件.硬件等各种设置不当所暴露出的问题. ab是apache自带的压力测试工具.ab非常实用,它不 ...

  5. 一、I/O操作(流的概念)

    一.流(Stream) 所谓流(Stream),就是一系列的数据. 当不同的介质之间有数据交互的时候,java就会使用流来实现. 数据源可以使文件,还可以是数据库,网络,甚至是其他的程序 不如读取文件 ...

  6. was重要文件位置备忘

    软件版本信息--/was/profiles/lsDmgr/properties/version/profile.version(/was/bin/versionInfo.sh) profile模版位置 ...

  7. Struts 2 初步入门(二)

    Struts 2 动态方法调用 1.在HelloWorldAction中添加两个新的方法如下: import com.opensymphony.xwork2.ActionSupport; public ...

  8. py requests.post2

    # -*- coding: utf-8 -*-import jsonimport requestsheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 6 ...

  9. sigmoid belief network boltszmann machine

    because of explaining away, the hidden weights in sigmoid belief network is no longer independent

  10. 【转】java提高篇(二)-----理解java的三大特性之继承

    [转]java提高篇(二)-----理解java的三大特性之继承 原文地址:http://www.cnblogs.com/chenssy/p/3354884.html 在<Think in ja ...