Python Basic Tutorial-Projekt drei universelles XML
In diesem Artikel werden hauptsächlich die drei universellen XML-Codes des Python-Basis-Tutorialprojekts ausführlich vorgestellt, die einen gewissen Referenzwert haben.
Der Name dieses Projekts wird besser als „Universal XML“ bezeichnet Auf der Grundlage einer XML-Datei wird automatisch eine Website mit einer entsprechenden Verzeichnisstruktur generiert. Allerdings wäre es immer noch zu einfach, wenn es auch CSS generieren könnte. Dies muss in Zukunft weiterentwickelt werden. Lassen Sie uns zunächst untersuchen, wie die HTML-Website strukturiert wird. Da die Website durch eine XML-Struktur generiert wird, sollte alles aus dieser XML-Datei stammen. Schauen wir uns zunächst diese XML-Datei website.xml an:
<website> <page name="index" title="Home page"> <h1>Welcome to my Home page</h1> <p>Hi, there. My name is Mr.gumby,and this is my home page,here are some of my int:</p> <ul> <li><a href="interests/shouting.html" rel="external nofollow" >Shouting</a></li> <li><a href="interests/sleeping.html" rel="external nofollow" >Sleeping</a></li> <li><a href="interests/eating.html" rel="external nofollow" >Eating</a></li> </ul> </page> <directory name="interests"> <page name="shouting" title="Shouting"> <h1>shouting page</h1> <p>....</p> </page> <page name="sleeping" title="Sleeping"> <h1>sleeping page</h1> <p>...</p> </page> <page name="eating" title="Eating"> <h1>Eating page</h1> <p>....</p> </page> </directory> </website>
Mit dieser Datei wollen wir sehen, wie man sie über diese Datei-Website generiert .
Zuerst müssen wir diese XML-Datei auf die gleiche Weise analysieren wie in Java. Der Unterschied zwischen den beiden Verarbeitungsmethoden liegt in der Geschwindigkeit und im Umfang Der Schwerpunkt liegt auf Effizienz, wobei jeweils nur ein kleiner Teil des Dokuments verarbeitet und der Speicher schnell und effektiv genutzt wird. Letzteres ist die entgegengesetzte Verarbeitungsmethode, bei der zuerst alle Dokumente in den Speicher geladen und dann verarbeitet werden, was langsamer und aufwändiger ist Der einzige Vorteil des Speichers besteht darin, dass er das gesamte Dokument bearbeiten kann.
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. Die letztere Klasse muss mit der Parse-Funktion zusammenarbeiten . gebraucht. Die Verwendung ist wie folgt: parse('xxx.xml',xxxHandler), der xxxHandler hier muss den oben genannten ContentHandler erben, aber er erbt ihn einfach, es ist nichts erforderlich. Wenn die Analysefunktion dann die XML-Datei verarbeitet, ruft sie die Funktion startElement und endElement in xxxHandler auf, um das Tag in XML zu starten und zu beenden. Der mittlere Prozess verwendet eine Funktion namens Zeichen, um alle Zeichenfolgen innerhalb des Tags zu verarbeiten.
Mit dem obigen Verständnis wissen wir bereits, wie man XML-Dateien verarbeitet und dann die Datei website.xml, die Quelle des Bösen, betrachtet und ihre Struktur analysiert. Es gibt nur zwei Knoten: Seite und Verzeichnis stellt offensichtlich eine Seite dar und Verzeichnis stellt ein Verzeichnis dar.
Damit wird die Idee der Verarbeitung dieser XML-Datei klar. Lesen Sie jeden Knoten der XML-Datei und bestimmen Sie dann, ob es sich um eine Seite oder ein Verzeichnis handelt. Wenn es sich um eine Seite handelt, erstellen Sie eine HTML-Seite und schreiben Sie dann den Inhalt des Knotens in die Datei. Wenn ein Verzeichnis gefunden wird, erstellen Sie einen Ordner und verarbeiten Sie dann den darin enthaltenen Seitenknoten (falls vorhanden).
Schauen wir uns diesen Teil des Codes an. Die Implementierung im Buch ist komplexer und flexibler. Schauen wir es uns zuerst an und analysieren wir es dann.
from xml.sax.handler import ContentHandler from xml.sax import parse import os class Dispatcher: def dispatch(self, prefix, name, attrs=None): mname = prefix + name.capitalize() dname = 'default' + prefix.capitalize() method = getattr(self, mname, None) if callable(method): args = () else: method = getattr(self, dname, None) args = name, if prefix == 'start': args += attrs, if callable(method): method(*args) def startElement(self, name, attrs): self.dispatch('start', name, attrs) def endElement(self, name): self.dispatch('end', name) class WebsiteConstructor(Dispatcher, ContentHandler): passthrough = False def __init__(self, directory): self.directory = [directory] self.ensureDirectory() def ensureDirectory(self): path = os.path.join(*self.directory) print path print '----' if not os.path.isdir(path): os.makedirs(path) def characters(self, chars): if self.passthrough: self.out.write(chars) def defaultStart(self, name, attrs): if self.passthrough: self.out.write('<' + name) for key, val in attrs.items(): self.out.write(' %s="%s"' %(key, val)) self.out.write('>') def defaultEnd(self, name): if self.passthrough: self.out.write('</%s>' % name) def startDirectory(self, attrs): self.directory.append(attrs['name']) self.ensureDirectory() def endDirectory(self): print 'endDirectory' self.directory.pop() def startPage(self, attrs): print 'startPage' filename = os.path.join(*self.directory + [attrs['name']+'.html']) self.out = open(filename, 'w') self.writeHeader(attrs['title']) self.passthrough = True def endPage(self): print 'endPage' self.passthrough = False self.writeFooter() self.out.close() def writeHeader(self, title): self.out.write('<html>\n <head>\n <title>') self.out.write(title) self.out.write('</title>\n </head>\n <body>\n') def writeFooter(self): self.out.write('\n </body>\n</html>\n') parse('website.xml',WebsiteConstructor('public_html'))
Es scheint, dass die obige Analyse dieses Programms etwas komplizierter ist, aber der große Mann Maomao sagte, dass jedes komplexe Programm so sei ein Papiertiger. Dann analysieren wir dieses Programm noch einmal.
Zuerst habe ich gesehen, dass dieses Programm zwei Klassen hat. Aufgrund der Vererbung kann es tatsächlich als eine Klasse betrachtet werden.
Dann schauen wir uns an, was es sonst noch hat: startElement, endElement und Zeichen, die wir analysiert haben: startPage, endDirectory; writeHeader, writeFooter; ; und Versand, diese Funktionen. Mit Ausnahme des Versands sind die vorherigen Funktionen leicht zu verstehen. Jedes Funktionspaar verarbeitet einfach die entsprechenden HTML-Tags und XML-Knoten. Der Versand ist komplizierter, da er zum dynamischen Kombinieren und Ausführen von Funktionen verwendet wird.
Die Verarbeitungsidee des Versands besteht darin, anhand der übergebenen Parameter (dh des Operationsnamens und des Knotennamens) zunächst zu bestimmen, ob eine entsprechende Funktion wie startPage vorhanden ist Existieren Sie, führen Sie den Standard- und Operationsnamen aus: z. B. defaultStart.
Nachdem Sie jede Funktion einzeln herausgefunden haben, wissen Sie, wie der gesamte Verarbeitungsablauf aussieht. Erstellen Sie zunächst eine public_html-Datei, um die gesamte Website zu speichern, lesen Sie dann die XML-Knoten und rufen Sie den Dispatch über startElement und endElement zur Verarbeitung auf. Dann gibt es noch die Art und Weise, wie der Versand die spezifische Verarbeitungsfunktion aufruft. Zu diesem Zeitpunkt ist die Analyse dieses Projekts abgeschlossen.
Der Hauptinhalt, den es zu beherrschen gilt, ist die Verwendung von SAX zur Verarbeitung von XML in Python, und der andere ist die Verwendung von Funktionen in Python, wie z. B. getattr, Sternchen beim Übergeben von Parametern ...
Verwandt empfohlen:
Python Basic Tutorial Project 2: Gute Bilder
Python Basic Tutorial Project 4: News Aggregation
Das obige ist der detaillierte Inhalt vonPython Basic Tutorial-Projekt drei universelles XML. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



PHP und Python haben ihre eigenen Vor- und Nachteile, und die Wahl hängt von den Projektbedürfnissen und persönlichen Vorlieben ab. 1.PHP eignet sich für eine schnelle Entwicklung und Wartung großer Webanwendungen. 2. Python dominiert das Gebiet der Datenwissenschaft und des maschinellen Lernens.

Python und JavaScript haben ihre eigenen Vor- und Nachteile in Bezug auf Gemeinschaft, Bibliotheken und Ressourcen. 1) Die Python-Community ist freundlich und für Anfänger geeignet, aber die Front-End-Entwicklungsressourcen sind nicht so reich wie JavaScript. 2) Python ist leistungsstark in Bibliotheken für Datenwissenschaft und maschinelles Lernen, während JavaScript in Bibliotheken und Front-End-Entwicklungsbibliotheken und Frameworks besser ist. 3) Beide haben reichhaltige Lernressourcen, aber Python eignet sich zum Beginn der offiziellen Dokumente, während JavaScript mit Mdnwebdocs besser ist. Die Wahl sollte auf Projektbedürfnissen und persönlichen Interessen beruhen.

Docker verwendet Linux -Kernel -Funktionen, um eine effiziente und isolierte Anwendungsumgebung zu bieten. Sein Arbeitsprinzip lautet wie folgt: 1. Der Spiegel wird als schreibgeschützte Vorlage verwendet, die alles enthält, was Sie für die Ausführung der Anwendung benötigen. 2. Das Union File System (UnionFS) stapelt mehrere Dateisysteme, speichert nur die Unterschiede, speichert Platz und beschleunigt. 3. Der Daemon verwaltet die Spiegel und Container, und der Kunde verwendet sie für die Interaktion. 4. Namespaces und CGroups implementieren Container -Isolation und Ressourcenbeschränkungen; 5. Mehrere Netzwerkmodi unterstützen die Containerverbindung. Nur wenn Sie diese Kernkonzepte verstehen, können Sie Docker besser nutzen.

Im VS -Code können Sie das Programm im Terminal in den folgenden Schritten ausführen: Erstellen Sie den Code und öffnen Sie das integrierte Terminal, um sicherzustellen, dass das Codeverzeichnis mit dem Terminal Working -Verzeichnis übereinstimmt. Wählen Sie den Befehl aus, den Befehl ausführen, gemäß der Programmiersprache (z. B. Pythons Python your_file_name.py), um zu überprüfen, ob er erfolgreich ausgeführt wird, und Fehler auflösen. Verwenden Sie den Debugger, um die Debugging -Effizienz zu verbessern.

Python zeichnet sich in Automatisierung, Skript und Aufgabenverwaltung aus. 1) Automatisierung: Die Sicherungssicherung wird durch Standardbibliotheken wie OS und Shutil realisiert. 2) Skriptschreiben: Verwenden Sie die PSUTIL -Bibliothek, um die Systemressourcen zu überwachen. 3) Aufgabenverwaltung: Verwenden Sie die Zeitplanbibliothek, um Aufgaben zu planen. Die Benutzerfreundlichkeit von Python und die Unterstützung der reichhaltigen Bibliothek machen es zum bevorzugten Werkzeug in diesen Bereichen.

VS -Code -Erweiterungen stellen böswillige Risiken dar, wie das Verstecken von böswilligem Code, das Ausbeutetieren von Schwachstellen und das Masturbieren als legitime Erweiterungen. Zu den Methoden zur Identifizierung böswilliger Erweiterungen gehören: Überprüfung von Verlegern, Lesen von Kommentaren, Überprüfung von Code und Installation mit Vorsicht. Zu den Sicherheitsmaßnahmen gehören auch: Sicherheitsbewusstsein, gute Gewohnheiten, regelmäßige Updates und Antivirensoftware.

Die Installation von CentOS-Installationen erfordert die folgenden Schritte: Installieren von Abhängigkeiten wie Entwicklungstools, PCRE-Devel und OpenSSL-Devel. Laden Sie das Nginx -Quellcode -Paket herunter, entpacken Sie es, kompilieren Sie es und installieren Sie es und geben Sie den Installationspfad als/usr/local/nginx an. Erstellen Sie NGINX -Benutzer und Benutzergruppen und setzen Sie Berechtigungen. Ändern Sie die Konfigurationsdatei nginx.conf und konfigurieren Sie den Hörport und den Domänennamen/die IP -Adresse. Starten Sie den Nginx -Dienst. Häufige Fehler müssen beachtet werden, z. B. Abhängigkeitsprobleme, Portkonflikte und Konfigurationsdateifehler. Die Leistungsoptimierung muss entsprechend der spezifischen Situation angepasst werden, z. B. das Einschalten des Cache und die Anpassung der Anzahl der Arbeitsprozesse.

VS Code ist der vollständige Name Visual Studio Code, der eine kostenlose und open-Source-plattformübergreifende Code-Editor und Entwicklungsumgebung von Microsoft ist. Es unterstützt eine breite Palette von Programmiersprachen und bietet Syntax -Hervorhebung, automatische Codebettel, Code -Snippets und intelligente Eingabeaufforderungen zur Verbesserung der Entwicklungseffizienz. Durch ein reiches Erweiterungs -Ökosystem können Benutzer bestimmte Bedürfnisse und Sprachen wie Debugger, Code -Formatierungs -Tools und Git -Integrationen erweitern. VS -Code enthält auch einen intuitiven Debugger, mit dem Fehler in Ihrem Code schnell gefunden und behoben werden können.
