python如何实现XML解析

  介绍

这篇文章将为大家详细讲解有关python如何实现XML解析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

三种方法:一是xml.dom。*模块,它是W3C DOM API的实现,若需要处理DOM API则该模块很适合;二是sax。*模块,它是SAX API的实现,这个模块牺牲了便捷性来换取速度和内存占用,SAX是一个基于事件的API,这就意味着它可以在“空”中处理庞大数量的的文档,不用完全加载进内存;三是xml.etree。ElementTree模块(简称等),它提供了轻量级的Python式的API,相对于DOM来说等快了很多,而且有很多令人愉悦的API可以使用,相对于SAX来说的等。iterparse起初也提供了“在空中”的处理方式,没有必要加载整个文档到内存,ET的性能的平均值和SAX差不多,但是API的效率更高一点而且使用起来很方便。

<强> 1,DOM(文档对象模型)

一个DOM的解析器在解析一个XML文档时,一次性读取整个文档,把文档中所有元素保存在内存中的一个树结构里,之后你可以利用DOM提供的不同的函数来读取或修改文档的内容和结构,也可以把修改过的内容写入XML文件。

python中用xml.dom.minidom来解析XML文件。

本文使用的示例文件的电影。xml内容如下

& lt; collection 货架=癗ew  Arrivals"比;   & lt; movie  title=耙贫疊ehind"比;   & lt; type>战争,才能,Thriller   & lt;才能format> DVD</format>   & lt;才能year> 2003 & lt;/year>   & lt;才能rating> PG</rating>   & lt;才能stars> 10 & lt;/stars>   & lt;才能description> Talk  about  a  US-Japan  war   & lt;/movie>   & lt; movie  title=癟ransformers"祝辞   & lt;才能type>动漫,Science  Fiction   & lt;才能format> DVD</format>   & lt;才能year> 1989 & lt;/year>   & lt;才能rating> R</rating>   & lt;才能stars> 8 & lt;/stars>   & lt;才能description> A  schientific  fiction   & lt;/movie>   & lt;才能movie  title=癟rigun"比;   & lt;才能type>动漫,Action   & lt;才能format> DVD</format>   & lt;才能episodes> 4 & lt;/episodes>   & lt;才能rating> PG</rating>   & lt;才能stars> 10 & lt;/stars>   & lt;才能description> Vash 从而踩踏! & lt;/description>   & lt;/movie>   & lt; movie  title=癐shtar"祝辞   & lt;才能type> Comedy</type>   & lt;才能format> VHS</format>   & lt;才能rating> PG</rating>   & lt;才能stars> 2 & lt;/stars>   & lt;才能description> Viewable  boredom   & lt;/movie>   & lt;/collection>

python实现如下

#, !/usr/bin/python   #,- *安康;编码:UTF-8  - * -      得到xml.dom.minidom  import 解析   import  xml.dom.minidom      #,使用minidom解析器打开,XML 文档   时间=DOMTree  xml.dom.minidom.parse (“movie.xml")   #得到元素对象   collection =DOMTree.documentElement   if  collection.hasAttribute (“shelf"):   打印才能(“Root  element : % s", %, collection.getAttribute (“shelf"))   #才能获取标签名   #才能打印(collection.nodeName)      #,在集合中获取所有电影   时间=movies  collection.getElementsByTagName (“movie")      #,打印每部电影的详细信息   for  movie 拷贝电影:   打印才能(电影“* * * * * * * * * *“)   if 才能movie.hasAttribute (“title"):   ,,,print(“标题:% s", %, movie.getAttribute (“title"))      type 才能=,movie.getElementsByTagName(& # 39;类型# 39;)[0]   打印才能(“类型:% s", %, type.childNodes [0] . data)   format 才能=,movie.getElementsByTagName(& # 39;格式# 39;)[0]   打印才能(“格式:% s", %, format.childNodes [0] . data)   年才能=movie.getElementsByTagName (“year")   if 才能;len(年)在0:   ,,,print(“年:% s", %,年[0].firstChild.data)   ,,,#父节点,parentNode   ,,,#打印([0].parentNode.nodeName)   rating 才能=,movie.getElementsByTagName(& # 39;评级# 39;)[0]   打印才能(“评级:% s", %, rating.childNodes [0] . data)   description 才能=,movie.getElementsByTagName(& # 39;描述# 39;)[0]   #,才能显示标签对之间的数据   打印才能(“描述:% s", %, description.childNodes [0] . data)   #才能打印(“描述:% s", %, description.firstChild.data)

执行结果:

Root  element : New 移民   * * * * * * * * * *的电影   标题:背后的移动速度   类型:战争,惊悚片   格式:DVD   年:2003   评级:PG   描述:,Talk  about  a  US-Japan 战争   * * * * * * * * * *的电影   标题:《变形金刚》   类型:动画,,Science 小说   格式:DVD   年:1989   评级:R   描述:A  schientific 小说   * * * * * * * * * *的电影   标题:Trigun   类型:动画,,行动   格式:DVD   评级:PG   描述:,Vash 从而,踩踏事件!   * * * * * * * * * *的电影   标题:伊师塔   类型:喜剧   格式:家用   评级:PG   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

python如何实现XML解析