初学Python求助Python解析xml

初学Python求助Python解析xml,第1张

python有三种方法解析XML,分别是SAX,DOM,以及ElementTree:

SAX用事件驱动模型,通过在解析XML的过程中触发一个个的事件并调用用户定义的回调函数来处理XML文件

DOM模型将XML数据在内存中解析成一个树,通过对树的 *** 作来 *** 作XML。

ElementTree就像一个轻量级的DOM,具有方便友好的API。代码可用性好,速度快,消耗内存少。

Python 解析XML实例:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

import xml.sax

class 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 = tag

      if 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 = content

      elif self.CurrentData == "format":

         self.format = content

      elif self.CurrentData == "year":

         self.year = content

      elif self.CurrentData == "rating":

         self.rating = content

      elif self.CurrentData == "stars":

         self.stars = content

      elif self.CurrentData == "description":

         self.description = content

  

if ( __name__ == "__main__"):

   

   # 创建一个 XMLReader

   parser = xml.sax.make_parser()

   # turn off namepsaces

   parser.setFeature(xml.sax.handler.feature_namespaces, 0)

   # 重写 ContextHandler

   Handler = MovieHandler()

   parser.setContentHandler( Handler )

   

   parser.parse("movies.xml")

python对XML的解析

常见的XML编程接口有DOM和SAX,这两种接口处理XML文件的方式不同,当然使用场合也不同。

python有三种方法解析码闹XML,SAX,DOM,以及ElementTree:

1.SAX (simple API for XML )

python 标准库包含SAX解析器,SAX用事件驱动模型,通过在解析XML的过程中触发一个个的事件并调用用户定义的回渣模纳调函数来处理XML文件。

2.DOM(Document Object Model)

将XML数据在内存中解析成一个树,通过对树的 *** 作来 *** 作XML。

3.ElementTree(元素树)

ElementTree就像一个轻量级的DOM,具有方便友好的API。代码可用性好如没,速度快,消耗内存少。

注:因DOM需要将XML数据映射到内存中的树,一是比较慢,二是比较耗内存,而SAX流式读取XML文件,比较快,占用内存少,但需要用户实现回调函数(handler)。

可以使用beautifulsoup解析,或者自己使用正则表达式:(import re)

首先获取所有的tr标签内的内容

tr_tags = re.findall(r"<tr>(?P[\w\W]*?)</tr>芦宴氏",  jsp_html_content)

对于每个tr内的标签内容:

for tag in tr_tags:

   first_str = re.findall(r"title=\"(?P[\w\W]*?)\"", tag)[0]

   second_str = re.findall(r"encode(\"(?P[\w\W]*?)\"", tag)[0]

   third_str = re.findall(r"祥枣%>\">(?P[\w\W]*?)</a>", tag)[0]

此时first_str, second_str, third_str 就对应于【文件中陪散所有的 "文件11", "/file/1文件11.pdf",  "文件11" 这三个信息"】


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12292145.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存