Python-XML-Analyse

Nov 23, 2016 pm 01:58 PM

Was ist XML?

XML bezieht sich auf eXtensible Markup Language. Auf dieser Website können Sie XML-Tutorials erlernen.

XML dient der Übertragung und Speicherung von Daten.

XML ist eine Reihe von Regeln, die semantisches Markup definieren, das ein Dokument in Komponenten unterteilt und diese Komponenten identifiziert.

Es ist auch eine Meta-Markup-Sprache, das heißt, sie definiert eine syntaktische Sprache zur Definition anderer semantischer und strukturierter Markup-Sprachen, die sich auf bestimmte Felder beziehen.

Python-Parsing von XML

Zu den gängigen XML-Programmierschnittstellen gehören DOM und SAX. Diese beiden Schnittstellen verarbeiten XML-Dateien auf unterschiedliche Weise, und natürlich sind auch die Verwendungsszenarien unterschiedlich.

Python verfügt über drei Methoden zum Parsen von XML, SAX, DOM und ElementTree:

1.SAX (einfache API für XML)

Pyhton-Standardbibliothek enthält den SAX-Parser SAX Mithilfe des ereignisgesteuerten Modells werden XML-Dateien verarbeitet, indem während des XML-Analyseprozesses nacheinander Ereignisse ausgelöst und benutzerdefinierte Rückruffunktionen aufgerufen werden.

2.DOM (Document Object Model)

Analysiert XML-Daten in einen Baum im Speicher und bearbeitet XML durch Bearbeiten des Baums.

3.ElementTree (Element Tree)

ElementTree ist wie ein leichtes DOM mit einer praktischen und benutzerfreundlichen API. Der Code ist gut benutzerfreundlich, schnell und verbraucht weniger Speicher.

Hinweis: Da DOM XML-Daten einem Baum im Speicher zuordnen muss, ist es relativ langsam und verbraucht mehr Speicher. Das SAX-Streaming-Lesen von XML-Dateien ist schneller und beansprucht weniger Speicher, erfordert jedoch die Implementierung der Rückruffunktion durch den Benutzer (Handler).

Der Inhalt der in diesem Kapitel verwendeten XML-Beispieldatei movies.xml lautet wie folgt:

Krieg, Thriller

DVD

2003

PG

10

< ;description>Sprechen Sie über einen Krieg zwischen den USA und Japan

DVD

1989

< ;rating>R< ;/rating>

8

Eine wissenschaftliche Fiktion

Anime, Action

DVD

4

PG

10

Vash the Stampede!

Komödie

VHS

PG

2

Sichtbare Langeweile

Python verwendet SAX zum Parsen von XML

SAX ist eine ereignisgesteuerte API.

Die Verwendung von SAX zum Parsen von XML-Dokumenten umfasst zwei Teile: den Parser und den Ereignishandler.

Der Parser ist für das Lesen des XML-Dokuments und das Senden von Ereignissen an den Ereignisprozessor verantwortlich, z. B. Elementstart- und Elementendeereignisse.

Der Ereignisprozessor ist für die Reaktion auf das Ereignis und die Weiterleitung verantwortlich Die XML-Daten werden verarbeitet.

1. Verarbeiten Sie große Dateien.

2. Benötigen Sie nur einen Teil der Datei oder benötigen Sie nur bestimmte Informationen aus der Datei.

3. Wenn Sie Ihr eigenes Objektmodell erstellen möchten.

Um Sax zum Verarbeiten von XML in Python zu verwenden, müssen Sie zunächst die Parse-Funktion in xml.sax und den ContentHandler in xml.sax.handler einführen.

Einführung in die ContentHandler-Klassenmethode

Zeichen(inhalt)-Methode

Aufrufzeitpunkt:

Beginnend mit der Zeile, bevor auf die Beschriftung gestoßen wird, gibt es Zeichen, Inhalt Die Werte sind diese Zeichenfolgen.

Von einem Tag gibt es Zeichen, bevor sie auf das nächste Tag stoßen, und der Wert des Inhalts sind diese Zeichenfolgen.

Von einem Tag gibt es Zeichen, bevor sie auf das Zeilenendezeichen stoßen, und der Wert des Inhalts sind diese Zeichenfolgen. Das

-Tag kann ein Start-Tag oder ein End-Tag sein.

startDocument()-Methode

Wird aufgerufen, wenn das Dokument gestartet wird.

endDocument()-Methode

Wird aufgerufen, wenn der Parser das Ende des Dokuments erreicht. Die

startElement(name, attrs)-Methode

wird aufgerufen, wenn ein XML-Start-Tag gefunden wird. name ist der Name des Tags und attrs ist das Attributwertwörterbuch des Tags. Die

endElement(name)-Methode

wird aufgerufen, wenn ein XML-End-Tag gefunden wird.

make_parser-Methode

Die folgende Methode erstellt ein neues Parser-Objekt und gibt es zurück.

xml.sax.make_parser( [parser_list] )

Parameterbeschreibung:

parser_list – Optionale Parameter, Parserliste

Parser-Methode

Die folgende Methode erstellt einen SAX-Parser und analysiert das XML-Dokument:

xml.sax.parse( xmlfile, contenthandler[, errorhandler])

Parameterbeschreibung:

xmlfile - XML-Dateiname

contenthandler – muss ein ContentHandler-Objekt sein

errorhandler – wenn dieser Parameter angegeben ist, muss errorhandler ein SAX-ErrorHandler-Objekt sein

parseString-Methode

parseString-Methode erstellt einen XML-Parser und analysiert die XML-Zeichenfolge:

xml.sax.parseString(xmlstring, contenthandler[, errorhandler])

Parameterbeschreibung:

xmlstring – XML-String

contenthandler – muss ein Objekt von ContentHandler sein

errorhandler – If Wenn dieser Parameter angegeben ist, muss der Fehlerhandler ein SAX-ErrorHandler-Objekt sein >

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 = ""

# Element startet die Ereignisverarbeitung

def startElement(self, tag, attributes):

self.CurrentData = tag

if tag == "movie":

print "* * ***Film*****"

title = attributes["title"]

print "Title:", title

# Elementende-Ereignisbehandlung

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 "Beschreibung: " , self.description

self.CurrentData = ""

#Content-Ereignisbehandlung

def Zeichen (Selbst, Inhalt):

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.starting = content

      elif self.CurrentData == "stars":

         self.stars = content

      elif self.CurrentData = = "description":

         self.description = content

  

if ( __name__ == "__main__"):

   

# 创建一个 XMLReader

   parser = xml.sax.make_parser()

   # namespaces deaktivieren

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

 

   # 重写 ContextHandler

   Handler = MovieHandler()

   parser.setContentHandler( Handler )

   

parser.parse("movies.xml")

   

以上代码执行结果如下:

*****Film*****

Titel: Enemy Behind

Typ: Krieg, Thriller

Format: DVD

Jahr : 2003

Bewertung: PG

Sterne: 10

Beschreibung: Sprechen über einen Krieg zwischen den USA und Japan

*****Film*** **

Titel: Transformers

Typ: Anime, Science-Fiction

Format: DVD

Jahr: 1989

Bewertung: R

Sterne: 8

Beschreibung: Eine wissenschaftliche Fiktion

*****Film*****

Titel: Trigun

Typ: Anime, Action

Format: DVD

Bewertung: PG

Sterne: 10

Beschreibung: Vash the Stampede!

*****Film*****

Titel: Ishtar

Typ: Komödie

Format: VHS

Bewertung: PG

Sterne: 2

Beschreibung: Sichtbare Langeweile

   

完整的 SAX API 文档请查阅Python SAX APIs

使用xml.dom解析xml

文件对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口.

一个 DOM的解析器在解析一个 XML 文档时, 一次性读取整个文档, 把文档中所有元素保存在内存中的个树结构里,之后你可以利用DOM 提供的不同的函数来读取或修改文档的内容和结构,也可以把修改过的内容写入xml文件.

python中用xml.dom.minidom来解析xml文件,实例如下:

#!/usr/bin/python

 

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")

 

# 打印每部电影的详细信息

für Film in Filmen:

   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 = Film. getElementsByTagName('description')[0]

   print "Description: %s" % description.childNodes[0].data

   

以上程序执行结果如下:

Stammelement : Neuzugänge

*****Film*****

Titel : Enemy Behind

Typ: Krieg, Thriller

Format: DVD

Einstufung: PG

Beschreibung: Talk über einen Krieg zwischen den USA und Japan

*****Film*****

Titel: Transformers

Typ: Anime, Science-Fiction

Format: DVD

Bewertung: R

Beschreibung: Eine wissenschaftliche Fiktion

*****Film*****

Titel: Trigun

Typ: Anime, Aktion

Format: DVD

Bewertung: PG

Beschreibung: Vash the Stampede!

*****Film*****

Titel: Ishtar

Typ: Komödie

Format: VHS

Bewertung: PG

Beschreibung: Sichtbare Langeweile


Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So verwenden Sie Python, um die ZiPF -Verteilung einer Textdatei zu finden So verwenden Sie Python, um die ZiPF -Verteilung einer Textdatei zu finden Mar 05, 2025 am 09:58 AM

Dieses Tutorial zeigt, wie man Python verwendet, um das statistische Konzept des Zipf -Gesetzes zu verarbeiten, und zeigt die Effizienz des Lesens und Sortierens großer Textdateien von Python bei der Bearbeitung des Gesetzes. Möglicherweise fragen Sie sich, was der Begriff ZiPF -Verteilung bedeutet. Um diesen Begriff zu verstehen, müssen wir zunächst das Zipf -Gesetz definieren. Mach dir keine Sorgen, ich werde versuchen, die Anweisungen zu vereinfachen. Zipf -Gesetz Das Zipf -Gesetz bedeutet einfach: In einem großen natürlichen Sprachkorpus erscheinen die am häufigsten vorkommenden Wörter ungefähr doppelt so häufig wie die zweiten häufigen Wörter, dreimal wie die dritten häufigen Wörter, viermal wie die vierten häufigen Wörter und so weiter. Schauen wir uns ein Beispiel an. Wenn Sie sich den Brown Corpus in amerikanischem Englisch ansehen, werden Sie feststellen, dass das häufigste Wort "Th ist

Wie benutze ich eine schöne Suppe, um HTML zu analysieren? Wie benutze ich eine schöne Suppe, um HTML zu analysieren? Mar 10, 2025 pm 06:54 PM

In diesem Artikel wird erklärt, wie man schöne Suppe, eine Python -Bibliothek, verwendet, um HTML zu analysieren. Es beschreibt gemeinsame Methoden wie find (), find_all (), select () und get_text () für die Datenextraktion, die Behandlung verschiedener HTML -Strukturen und -Anternativen (SEL)

Bildfilterung in Python Bildfilterung in Python Mar 03, 2025 am 09:44 AM

Der Umgang mit lauten Bildern ist ein häufiges Problem, insbesondere bei Mobiltelefonen oder mit geringen Auflösungskamera-Fotos. In diesem Tutorial wird die Bildfilterungstechniken in Python unter Verwendung von OpenCV untersucht, um dieses Problem anzugehen. Bildfilterung: Ein leistungsfähiges Werkzeug Bildfilter

Wie man mit PDF -Dokumenten mit Python arbeitet Wie man mit PDF -Dokumenten mit Python arbeitet Mar 02, 2025 am 09:54 AM

PDF-Dateien sind für ihre plattformübergreifende Kompatibilität beliebt, wobei Inhalte und Layout für Betriebssysteme, Lesegeräte und Software konsistent sind. Im Gegensatz zu Python Processing -Klartextdateien sind PDF -Dateien jedoch binäre Dateien mit komplexeren Strukturen und enthalten Elemente wie Schriftarten, Farben und Bilder. Glücklicherweise ist es nicht schwierig, PDF -Dateien mit Pythons externen Modulen zu verarbeiten. In diesem Artikel wird das PYPDF2 -Modul verwendet, um zu demonstrieren, wie Sie eine PDF -Datei öffnen, eine Seite ausdrucken und Text extrahieren. Die Erstellung und Bearbeitung von PDF -Dateien finden Sie in einem weiteren Tutorial von mir. Vorbereitung Der Kern liegt in der Verwendung von externem Modul PYPDF2. Installieren Sie es zunächst mit PIP: pip ist p

Wie kann man mit Redis in Django -Anwendungen zwischenstrichen Wie kann man mit Redis in Django -Anwendungen zwischenstrichen Mar 02, 2025 am 10:10 AM

Dieses Tutorial zeigt, wie man Redis Caching nutzt, um die Leistung von Python -Anwendungen zu steigern, insbesondere innerhalb eines Django -Frameworks. Wir werden Redis -Installation, Django -Konfiguration und Leistungsvergleiche abdecken, um den Vorteil hervorzuheben

Wie führe ich ein tiefes Lernen mit Tensorflow oder Pytorch durch? Wie führe ich ein tiefes Lernen mit Tensorflow oder Pytorch durch? Mar 10, 2025 pm 06:52 PM

Dieser Artikel vergleicht TensorFlow und Pytorch für Deep Learning. Es beschreibt die beteiligten Schritte: Datenvorbereitung, Modellbildung, Schulung, Bewertung und Bereitstellung. Wichtige Unterschiede zwischen den Frameworks, insbesondere bezüglich des rechnerischen Graps

Einführung in die parallele und gleichzeitige Programmierung in Python Einführung in die parallele und gleichzeitige Programmierung in Python Mar 03, 2025 am 10:32 AM

Python, ein Favorit für Datenwissenschaft und Verarbeitung, bietet ein reichhaltiges Ökosystem für Hochleistungs-Computing. Die parallele Programmierung in Python stellt jedoch einzigartige Herausforderungen dar. Dieses Tutorial untersucht diese Herausforderungen und konzentriert sich auf die globale Interprete

So implementieren Sie Ihre eigene Datenstruktur in Python So implementieren Sie Ihre eigene Datenstruktur in Python Mar 03, 2025 am 09:28 AM

Dieses Tutorial zeigt, dass eine benutzerdefinierte Pipeline -Datenstruktur in Python 3 erstellt wird, wobei Klassen und Bedienerüberladungen für verbesserte Funktionen genutzt werden. Die Flexibilität der Pipeline liegt in ihrer Fähigkeit, eine Reihe von Funktionen auf einen Datensatz GE anzuwenden

See all articles