
本文共 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.saxfrom xml.sax.handler import ContentHandlerclass 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 parsedom_tree = parse("movies.xml")root_element = dom_tree.documentElementif 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 ������������������������������
发表评论
最新留言
关于作者
