Лучшее руководство по Python XML-синтаксического анализа в 2024 году. В этом руководстве вы можете изучить Что такое XML?,Python для XML синтаксического анализа,Python XML-синтаксического анализа с использованием SAX,метод make_parser,метод синтаксического анализа,метод parseString,Python синтаксического анализа экземпляра XML,Используйте xml.dom синтаксического анализа XML,
XML означает расширяемый язык разметки(е X tensible M arkup L anguage). Вы можете узнать с помощью этого сайта XML Учебник
XML предназначен для передачи и хранения данных.
XML представляет собой набор правил для определения семантики, эти теги документируют разделен на множество частей, и эти части должны быть идентифицированы.
Кроме того, язык мета-разметки, который определяет синтаксис языка, используемого для определения другого конкретного домена, семантический, структурированный язык разметки.
Общие DOM и XML интерфейсы программирования SAX, два различных интерфейса с XML-файлов, как, конечно, использование различных случаев.
Есть три способа Python синтаксического анализа XML, SAX, DOM и ElementTree:
Python стандартная библиотека содержит SAX-парсер, SAX с моделью, управляемой событиями, инициированный одним событием в процессе синтаксического анализа XML и вызова, определенные пользователем функции обратного вызова для обработки XML-файлов.
Данных XML анализируется в дерево в памяти, работающей по дереву, чтобы манипулировать XML.
ElementTree как легкий DOM, с удобной и дружественной API. наличие кода, быстро и потреблять меньше памяти.
Примечание: В связи с DOM необходимо сопоставить данные XML в дерево памяти, один медленный, второй больше потребление памяти, SAX потоковое считывает файл XML быстрее, занимают меньше памяти, но требует от пользователя для выполнения обратного вызова (обработчик ).
Используйте этот раздел к экземпляру документа XML movies.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.
Использование SAX синтаксического анализа документа XML состоит из двух частей: синтаксический анализатор и обработчик событий.
Анализатор отвечает за чтение XML-документы и отправляет обработчики событий событие, например, элементы начинаются с конечным элементом события;
Обработчик события отвечает за событие, соответственно, передача данных XML для дальнейшей обработки.
Используйте саксофоне образом XML xml.sax впервые введен в функции синтаксического анализа, а также xml.sax.handler ContentHandler в Python.
символов метод (содержание)
Время звонка:
С начала строки, прежде чем испытывать этикетку, есть значение символов, содержание этих строк.
Из ярлыка, этикетки до следующей встречи, присутствие персонажа, значение содержание этих строк.
С меткой, до встречи с терминатор линии, наличие символов, значение содержания этих строк.
Метка может быть началом тега, это может быть конец этикетки.
Метод StartDocument ()
Запуск документации называется.
EndDocument метод ()
Когда вызов достигает конца документа синтаксического анализа.
(Имя, ATTRS) метод StartElement
Вызов встречается начальный тег XML, имя является именем тега, ATTRS является словарем тег значение свойства.
Метод EndElement (имя)
Вызов встречается конечный XML-тег.
Следующий метод создает новый объект синтаксического анализатора и возвращается.
xml.sax.make_parser( [parser_list] )
Параметр Описание:
Следующий метод создает SAX-парсер и синтаксического анализа XML-документ:
xml.sax.parse( xmlfile, contenthandler[, errorhandler])
Параметр Описание:
метод parseString создает XML-парсер и синтаксического анализа XML-строку:
xml.sax.parseString(xmlstring, contenthandler[, errorhandler])
Параметр Описание:
#!/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")
Приведенный выше код выполняется следующим образом:
*****Movie***** Title: Enemy Behind Type: War, Thriller Format: DVD Year: 2003 Rating: PG Stars: 10 Description: Talk about a US-Japan war *****Movie***** Title: Transformers Type: Anime, Science Fiction Format: DVD Year: 1989 Rating: R Stars: 8 Description: A schientific fiction *****Movie***** Title: Trigun Type: Anime, Action Format: DVD Rating: PG Stars: 10 Description: Vash the Stampede! *****Movie***** Title: Ishtar Type: Comedy Format: VHS Rating: PG Stars: 2 Description: Viewable boredom
Полная документация по API SAX , пожалуйста , обратитесь к Python SAX API ,
Модель документа Объект (Document Object Model, упоминается как DOM), это W3C-рекомендуемое лечение Extensible Markup Language стандартный интерфейс программирования.
В DOM парсер для синтаксического анализа XML-документ, читать весь документ сразу, все элементы документа, сохраненного в виде древовидной структуры в памяти, то вы можете использовать DOM, чтобы обеспечить различные функции для чтения или изменения документа содержание и структура должны быть изменены, чтобы записать содержимое файла XML.
Python с xml.dom.minidom для синтаксического анализа XML-документ, примеры заключаются в следующем:
#!/usr/bin/python # -*- coding: UTF-8 -*- from xml.dom.minidom import parse import xml.dom.minidom # 使用minidom解析器打开 XML 文档 DOMTree = xml.dom.minidom.parse("movies.xml") collection = DOMTree.documentElement if collection.hasAttribute("shelf"): print "Root element : %s" % collection.getAttribute("shelf") # 在集合中获取所有电影 movies = collection.getElementsByTagName("movie") # 打印每部电影的详细信息 for movie in movies: print "*****Movie*****" if movie.hasAttribute("title"): print "Title: %s" % movie.getAttribute("title") type = movie.getElementsByTagName('type')[0] print "Type: %s" % type.childNodes[0].data format = movie.getElementsByTagName('format')[0] print "Format: %s" % format.childNodes[0].data rating = movie.getElementsByTagName('rating')[0] print "Rating: %s" % rating.childNodes[0].data description = movie.getElementsByTagName('description')[0] print "Description: %s" % description.childNodes[0].data
Результаты описанных выше процедур следующим образом:
Root element : New Arrivals *****Movie***** Title: Enemy Behind Type: War, Thriller Format: DVD Rating: PG Description: Talk about a US-Japan war *****Movie***** Title: Transformers Type: Anime, Science Fiction Format: DVD Rating: R Description: A schientific fiction *****Movie***** Title: Trigun Type: Anime, Action Format: DVD Rating: PG Description: Vash the Stampede! *****Movie***** Title: Ishtar Type: Comedy Format: VHS Rating: PG Description: Viewable boredom
Полная документация по API DOM обратитесь к Питона DOM - API , .