Python3处理XML文件学习

Python3处理XML文件学习

介绍

XML是Extensible Markup Language的缩写,类似于HTMLSGML。XML适用于小规模或者中等规模且不使用数据库的应用场景。

XML解析器架构和API

Python标准库提供处理XML文件最小限度且有效的接口。XML数据处理最广泛使用的API主要有SAXDOM接口。

  • Simple API For XML(SAX):在这里,你注册感兴趣事件的回调函数,然后让解析器遍历文档。当你的文档较大或者内存受限时,这种方法是有用的,解析器一边从硬盘读取数据,一边解析文件,这样整个文件无需保存在内存。
  • Document Object Model(DOM) APIDOMWWW联盟推荐的API,这要求整个文件被读取到内存,按照层次形式表示XML文档的所有特征。

显然,当处理大文件时,根据工作机制,SAX不可能像DOM那样快速处理信息。另一方面,如果只使用DOM可能会耗尽你的资源,尤其是用于处理许多小文件时。

SAX是只读的,然而DOM允许对XML文件改写。这两种方法是互补,在处理大文件时,可以根据场景灵活决定具体使用哪种API。

XML示例文件如下:

<collection shelf = "New Arrivals">
<movie title = "Enemy Behind">
   <type>War, Thriller</type>
   <format>DVD</format>
   <year>2003</year>
   <rating>PG</rating>
   <stars>10</stars>
   <description>Talk about a US-Japan war</description>
</movie>
<movie title = "Transformers">
   <type>Anime, Science Fiction</type>
   <format>DVD</format>
   <year>1989</year>
   <rating>R</rating>
   <stars>8</stars>
   <description>A schientific fiction</description>
</movie>
   <movie title = "Trigun">
   <type>Anime, Action</type>
   <format>DVD</format>
   <episodes>4</episodes>
   <rating>PG</rating>
   <stars>10</stars>
   <description>Vash the Stampede!</description>
</movie>
<movie title = "Ishtar">
   <type>Comedy</type>
   <format>VHS</format>
   <rating>PG</rating>
   <stars>2</stars>
   <description>Viewable boredom</description>
</movie>
</collection>

使用SAX API解析XML

SAX是事件驱动XML解析的标准接口。使用SAX解析XML通常要求开发人员通过继承xml.sax.ContentHandler创建自己的.ContentHandler

ContentHandler处理你感兴趣XML的特定标签和属性。.ContentHandler对象提供了各种解析事件的方法。当解析器解析XML文件时,解析器调用.ContentHandler方法。

上一篇:spring5——Aop的实现原理(动态代理)


下一篇:测试题