Лучшее руководство по Python3 XML синтаксического анализа в 2024 году. В этом руководстве вы можете изучить Что такое XML?,Python для XML синтаксического анализа,Python XML-синтаксического анализа с использованием SAX,метод make_parser,метод синтаксического анализа,метод parseString,Python синтаксического анализа экземпляра XML,Используйте xml.dom синтаксического анализа XML,
XML ссылается на расширяемый язык разметки(е Х tensible М arkup L anguage), подмножество стандартной обобщенный язык разметки, представляет собой способ маркировки электронного документа , чтобы иметь структурированный язык разметки. Вы можете узнать с помощью этого сайта XML Учебник
XML предназначен для передачи и хранения данных.
XML представляет собой набор правил для определения семантики, эти теги документируют разделен на множество частей, и эти части должны быть идентифицированы.
Кроме того, язык мета-разметки, который определяет синтаксис языка, используемого для определения другого конкретного домена, семантический, структурированный язык разметки.
Общие DOM и XML интерфейсы программирования SAX, два различных интерфейса с XML-файлов, как, конечно, использование различных случаев.
Есть три способа Python синтаксического анализа XML, SAX, DOM и ElementTree:
Python стандартная библиотека содержит SAX-парсер, SAX с моделью, управляемой событиями, инициированный одним событием в процессе синтаксического анализа XML и вызова, определенные пользователем функции обратного вызова для обработки XML-файлов.
Данных XML анализируется в дерево в памяти, работающей по дереву, чтобы манипулировать 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/python3 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/python3 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 , .