Python3 XML 解析
发布日期:2021-05-10 07:21:18 浏览次数:16 分类:精选文章

本文共 4803 字,大约阅读时间需要 16 分钟。

XML ��� Python ���������SAX ��� DOM ������������������

��������� XML���

XML���������������������������Extensible Markup Language��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� XML ���������

XML ���������

XML ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

������������������������XML ���������������������������������������������������������������������������������������������������������

Python ��� XML ���������

Python ��������������������������������� XML ��������������� DOM ��� SAX ������ ElementTree������������������������������������������������������������������������

1. SAX��������� XML ������������

SAX ��������������������������������������������������������������������������������������������������������������������� XML ���������

���������

  • ���������������������������
  • ������������������������������������������������������
  • ������������������������������������

��� Python ��������� SAX ���������

  • ������ xml.sax ������ parse ��������� xml.sax.handler.ContentHandler ������

ContentHandler ���������������������

  • characters(content)������������������������
    • ���������������������������������������������������������������������
  • startDocument()���������������������������
  • endDocument()���������������������������
  • startElement(name, attrs)��������� XML ������������������������
    • name ������������������attrs ���������������������
  • endElement(name)��������� XML ������������������������

���������������������������������

import xml.sax
from xml.sax.handler import ContentHandler
class MovieHandler(ContentHandler):
def __init__(self):
self.current_data = ""
self.type = ""
self.format = ""
self.year = ""
self.rating = ""
self.stars = ""
self.description = ""
def startElement(self, tag, attributes):
self.current_data = tag
if tag == "movie":
print(f"*****Movie*****Title: {attributes['title']}")
def endElement(self, tag):
if self.current_data in ["type", "format", "year", "rating", "stars", "description"]:
print(f"*****Movie*****{self.current_data}: {self.get_current_value()}")
self.current_data = ""
def characters(self, content):
if self.current_data:
setattr(self, self.current_data, content)
def get_current_value(self):
return getattr(self, self.current_data)
if __name__ == "__main__":
parser = xml.sax.make_parser()
parser.setFeature(xml.sax.handler.feature_namespaces, 0)
handler = MovieHandler()
parser.setContentHandler(handler)
parser.parse("movies.xml")

2. DOM������������������������

DOM ��������������������������� XML ��������������������������������������������������������������������������������������� DOM ���������������������������������������

������ xml.dom.minidom ������������

from xml.dom.minidom import parse
dom_tree = parse("movies.xml")
root_element = dom_tree.documentElement
if root_element.hasAttribute("shelf"):
print(f"Root element: {root_element.getAttribute('shelf')}")
movies = root_element.getElementsByTagName("movie")
for movie in movies:
print("*****Movie*****")
if movie.hasAttribute("title"):
print(f"Title: {movie.getAttribute('title')}")
type = movie.getElementsByTagName('type')[0]
print(f"Type: {type.childNodes[0].data}")
format = movie.getElementsByTagName('format')[0]
print(f"Format: {format.childNodes[0].data}")
rating = movie.getElementsByTagName('rating')[0]
print(f"Rating: {rating.childNodes[0].data}")
description = movie.getElementsByTagName('description')[0]
print(f"Description: {description.childNodes[0].data}")

��� case ������ DOM ������

������������������������������������

Root element: New Arrivals
*****Movie*****Title: Enemy Behind
*****Movie*****Type: War, Thriller
...

DOM ��� SAX ���������

| ������ | SAX | DOM | |--------------------|-------------------------------@|-------------------------------@| | ������������ | ������������ | ������������������ | | ������������������ | ��������������������������� | ������������������������������������ | | DOM ��������������� | ������������������������������������ | ��������������������������� fuee | | ������������ | ��������������������������� | ������������������������������������ |

������

���������������������������SAX ��� DOM ������������������������������������������������������������������������������������������������������������������������������������������ DOM ������������������������������

上一篇:Python3 多线程
下一篇:Python3 JSON 数据解析

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月17日 19时44分18秒