python解析 :
XML 指可扩展标记语言(eXtensible Markup Language),标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言
XML 被设计用来传输和存储数据。
XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。
它也是元标记语言,即定义了用于定义其他与特定领域有关的、语义的、结构化的标记语言的句法语言
python有三种方法解析XML,SAX,DOM :
XML解析:
1. parse(filename) 用parse获取到整个树,加载到内存里
2.root=doc.documentElement 获取根节点
3.moies=root.getElementsByTagName("movie") 获取所有子节点的集合
4.for movie in movies : 循环遍历 movies 循环获取movies的每一个子节点
获取子节点的值.chidlNodes[0].data
实例 :
导入使用的模板:
from xml.dom.minidom import parse
import xml.dom.minidom
#获取整个树
Dom=xml.dom.minidom.parse("student.xml")
#获取子节点
collection=Dom.documentElement
#获取所有子节点的集合
stus=collection.getElementsByTagName("book")
#循环遍历图书信息
for stu in stus :
print("******---Book---******")
if stu.hasAttribute("id"):
print("id: %s" %stu.getAttribute("id"))
bookname=stu.getElementsByTagName('bookname')[0]
print("bookname %s " %bookname.childNodes[0].data)
author=stu.getElementsByTagName('author')[0]
print("author %s " %author.childNodes[0].data)
price=stu.getElementsByTagName('price')[0]
print("price %s " %price.childNodes[0].data)
SAX解析:
在python中使用sax方式处理xml要先引入xml.sax中的parse函数,还有xml.sax.handler中的ContentHandler
导入模板 :
from xml.sax import parse
from xml.sax import ContentHandler
ContentHandler类方法介绍 : characters(content)方法 调用时机: 从行开始,遇到标签之前,存在字符,content的值为这些字符串。 从一个标签,遇到下一个标签之前, 存在字符,content的值为这些字符串。 从一个标签,遇到行结束符之前,存在字符,content的值为这些字符串。 标签可以是开始标签,也可以是结束标签。 startDocument()方法 文档启动的时候调用。 endDocument()方法 解析器到达文档结尾时调用。 startElement(name, attrs)方法 遇到XML开始标签时调用,name是标签的名字,attrs是标签的属性值字典。 endElement(name)方法 遇到XML结束标签时调用
parser方法 : 以下方法创建一个 SAX 解析器并解析xml文档: xml.sax.parse( xmlfile, contenthandler[, errorhandler])
参数说明: xmlfile - xml文件名 contenthandler - 必须是一个ContentHandler的对象 errorhandler - 如果指定该参数,errorhandler必须是一个SAX ErrorHandler对象
xml.dom解析xml :
一个 DOM 的解析器在解析一个 XML 文档时,一次性读取整个文档,把文档中所有元素保存在内存中的一个树结构里,之后你可以利用DOM 提供的不同的函数来读取或修改文档的内容和结构,也可以把修改过的内容写入xml文件