江西专业网站建设,建设银行网站总是崩溃,域名 和网站有什么区别,网站架构功能模块及描述什么是 XML#xff1f;XML 指可扩展标记语言#xff08;eXtensible Markup Language#xff09;#xff0c;标准通用标记语言的子集#xff0c;是一种用于标记电子文件使其具有结构性的标记语言。 你可以通过本站学习 XML 教程XML 被设计用来传输和存储数据。XML 是一套定…什么是 XMLXML 指可扩展标记语言eXtensible Markup Language标准通用标记语言的子集是一种用于标记电子文件使其具有结构性的标记语言。 你可以通过本站学习 XML 教程XML 被设计用来传输和存储数据。XML 是一套定义语义标记的规则这些标记将文档分成许多部件并对这些部件加以标识。它也是元标记语言即定义了用于定义其他与特定领域有关的、语义的、结构化的标记语言的句法语言。Python 对 XML 的解析常见的 XML 编程接口有 DOM 和 SAX这两种接口处理 XML 文件的方式不同当然使用场合也不同。Python 有三种方法解析 XMLSAXDOM以及 ElementTree:1.SAX (simple API for XML )Python 标准库包含 SAX 解析器SAX 用事件驱动模型通过在解析 XML 的过程中触发一个个的事件并调用用户定义的回调函数来处理 XML 文件。2.DOM(Document Object Model)将 XML 数据在内存中解析成一个树通过对树的操作来操作 XML。本章节使用到的 XML 实例文件 movies.xml 内容如下collection shelfNew Arrivals
movie titleEnemy BehindtypeWar, Thriller/typeformatDVD/formatyear2003/yearratingPG/ratingstars10/starsdescriptionTalk about a US-Japan war/description
/movie
movie titleTransformerstypeAnime, Science Fiction/typeformatDVD/formatyear1989/yearratingR/ratingstars8/starsdescriptionA schientific fiction/description
/moviemovie titleTriguntypeAnime, Action/typeformatDVD/formatepisodes4/episodesratingPG/ratingstars10/starsdescriptionVash the Stampede!/description
/movie
movie titleIshtartypeComedy/typeformatVHS/formatratingPG/ratingstars2/starsdescriptionViewable boredom/description
/movie
/collection
Python 使用 SAX 解析 xmlSAX 是一种基于事件驱动的API。利用 SAX 解析 XML 文档牵涉到两个部分: 解析器和事件处理器。解析器负责读取 XML 文档并向事件处理器发送事件如元素开始跟元素结束事件。而事件处理器则负责对事件作出响应对传递的 XML 数据进行处理。1、对大型文件进行处理2、只需要文件的部分内容或者只需从文件中得到特定信息。3、想建立自己的对象模型的时候。在 Python 中使用 sax 方式处理 xml 要先引入 xml.sax 中的 parse 函数还有 xml.sax.handler 中的 ContentHandler。Python 使用 SAX 解析 xmlSAX 是一种基于事件驱动的API。利用 SAX 解析 XML 文档牵涉到两个部分: 解析器和事件处理器。解析器负责读取 XML 文档并向事件处理器发送事件如元素开始跟元素结束事件。而事件处理器则负责对事件作出响应对传递的 XML 数据进行处理。1、对大型文件进行处理2、只需要文件的部分内容或者只需从文件中得到特定信息。3、想建立自己的对象模型的时候。在 Python 中使用 sax 方式处理 xml 要先引入 xml.sax 中的 parse 函数还有 xml.sax.handler 中的 ContentHandler。ContentHandler 类方法介绍characters(content) 方法调用时机从行开始遇到标签之前存在字符content 的值为这些字符串。从一个标签遇到下一个标签之前 存在字符content 的值为这些字符串。从一个标签遇到行结束符之前存在字符content 的值为这些字符串。标签可以是开始标签也可以是结束标签。startDocument() 方法文档启动的时候调用。endDocument() 方法解析器到达文档结尾时调用。startElement(name, attrs) 方法遇到XML开始标签时调用name 是标签的名字attrs 是标签的属性值字典。endElement(name) 方法遇到XML结束标签时调用。make_parser 方法以下方法创建一个新的解析器对象并返回。xml.sax.make_parser( [parser_list] )参数说明:parser_list - 可选参数解析器列表parser 方法以下方法创建一个 SAX 解析器并解析xml文档xml.sax.parse( xmlfile, contenthandler[, errorhandler])参数说明:xmlfile - xml文件名contenthandler - 必须是一个 ContentHandler 的对象errorhandler - 如果指定该参数errorhandler 必须是一个 SAX ErrorHandler 对象parseString 方法parseString 方法创建一个 XML 解析器并解析 xml 字符串xml.sax.parseString(xmlstring, contenthandler[, errorhandler])参数说明:xmlstring - xml字符串contenthandler - 必须是一个 ContentHandler 的对象errorhandler - 如果指定该参数errorhandler 必须是一个 SAX ErrorHandler对象Python 解析XML实例#!/usr/bin/python3import xml.saxclass MovieHandler( xml.sax.ContentHandler ):def __init__(self):self.CurrentData self.type self.format self.year self.rating self.stars self.description # 元素开始调用def startElement(self, tag, attributes):self.CurrentData tagif tag movie:print (*****Movie*****)title attributes[title]print (Title:, title)# 元素结束调用def endElement(self, tag):if self.CurrentData type:print (Type:, self.type)elif self.CurrentData format:print (Format:, self.format)elif self.CurrentData year:print (Year:, self.year)elif self.CurrentData rating:print (Rating:, self.rating)elif self.CurrentData stars:print (Stars:, self.stars)elif self.CurrentData description:print (Description:, self.description)self.CurrentData # 读取字符时调用def characters(self, content):if self.CurrentData type:self.type contentelif self.CurrentData format:self.format contentelif self.CurrentData year:self.year contentelif self.CurrentData rating:self.rating contentelif self.CurrentData stars:self.stars contentelif self.CurrentData description:self.description contentif ( __name__ __main__):# 创建一个 XMLReaderparser xml.sax.make_parser()# 关闭命名空间parser.setFeature(xml.sax.handler.feature_namespaces, 0)# 重写 ContextHandlerHandler MovieHandler()parser.setContentHandler( Handler )parser.parse(movies.xml)以上代码执行结果如下*****Movie*****
Title: Enemy Behind
Type: War, Thriller
Format: DVD
Year: 2003
Rating: PG
Stars: 10
Description: Talk about a US-Japan war
*****Movie*****
Title: Transformers
Type: Anime, Science Fiction
Format: DVD
Year: 1989
Rating: R
Stars: 8
Description: A schientific fiction
*****Movie*****
Title: Trigun
Type: Anime, Action
Format: DVD
Rating: PG
Stars: 10
Description: Vash the Stampede!
*****Movie*****
Title: Ishtar
Type: Comedy
Format: VHS
Rating: PG
Stars: 2
Description: Viewable boredom完整的 SAX API 文档请查阅xml.sax - Support for SAX2 parsers - Python 3.8.3rc1 documentation使用xml.dom解析xml文件对象模型Document Object Model简称DOM是W3C组织推荐的处理可扩展置标语言的标准编程接口。一个 DOM 的解析器在解析一个 XML 文档时一次性读取整个文档把文档中所有元素保存在内存中的一个树结构里之后你可以利用DOM 提供的不同的函数来读取或修改文档的内容和结构也可以把修改过的内容写入xml文件。python中用xml.dom.minidom来解析xml文件实例如下#!/usr/bin/python3from xml.dom.minidom import parse
import xml.dom.minidom# 使用minidom解析器打开 XML 文档
DOMTree xml.dom.minidom.parse(movies.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]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)以上程序执行结果如下Root element : New Arrivals
*****Movie*****
Title: Enemy Behind
Type: War, Thriller
Format: DVD
Rating: PG
Description: Talk about a US-Japan war
*****Movie*****
Title: Transformers
Type: Anime, Science Fiction
Format: DVD
Rating: R
Description: A schientific fiction
*****Movie*****
Title: Trigun
Type: Anime, Action
Format: DVD
Rating: PG
Description: Vash the Stampede!
*****Movie*****
Title: Ishtar
Type: Comedy
Format: VHS
Rating: PG
Description: Viewable boredom完整的 DOM API 文档请查阅Python DOM APIs。