English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Implementierungsmethode zur Konvertierung von XML-Dateien in HTML-Dateien mit Python

功能就是题目所述,我的python2.7,装在windows环境,我使用的开发工具是wingide 6.0

1、首先是我设计的简单的一个xml文件,也就是用来解析的源文件

下面是这个文件website.xml内容:

<website>
<page name="index" title="[#1#]">
	<h1>welcome to</h1>
	<p>this is a moment</p>
<ul>
<li><a href="shouting.html" rel="external nofollow" >Shouting</a></li>
</ul>
</page>
<page name="shouting" title="[#2#]">
<h1>My name is likeyou</h1>
</page>
</website>

解释:page就是对应一个html文件,这里有两个page也就是要解析成两个html文件,然后分别是index.html和shouting.html,其中在index.html中通过<a>链接转到shouting.html文件中显示shouting.html文件的内容

2、python代码实现解析(xmltest.py)

#!D:\Python27\python.exe
#-*- coding:utf-8 -*-
from xml.sax import parse
from xml.sax.handler import ContentHandler
class PageCreate(ContentHandler):
 pagethrough = False
 def startElement(self, name, attrs):
  if name == 'page':
   
   self.out = open(attrs['name'] + '.html', 'w')
   self.out.write('<html>
<head>
')
   self.out.write('<title>%s<',/title>\n' %(attrs['title']))}}
   self.out.write('<')/head>\n<body>\n')
  elif self.pagethrough:
   self.out.write('<')
   self.out.write(name)
   for str,val in attrs.items():
    self.out.write(' %s="%s"' %(str, val))
   self.out.write('>') 
 def endElement(self, name):
  if name == 'page':
   self.out.write('<')/body>\n</html>')
   self.pagethrough = False
   self.out.close()
  if self.pagethrough:
   self.out.write('<')
   self.out.write('/' + name)
   self.out.write('>')
 def characters(self, content):
  if self.pagethrough:
   self.out.write(content)
parse('D:\\pyproject\\file\\website.xml', PageCreate())

Codeerklärung:

Die xml.sax-Parse-Methode wird verwendet, um den parse-Methodeaufruf zu analysieren, eine eigene Analyseklasse wird erstellt, die ContentHandler erbt, und darin werden die Methoden startelement und endelement sowie charactors überschrieben, der startelement-Methode wird aufgerufen, wenn im xml-Datei das Anfangs-Tag gefunden wird, wie <a>, <h1> Die passthrough-Variable dient dazu zu bestimmen, ob sich der aktuelle Zustand innerhalb eines page-Elements befindet, true bedeutet, dass sich der aktuelle Zustand innerhalb eines page-Elements befindet, das also zu den Elementen der aktuellen Seite gehört, da xml.sax sich auf die Tags konzentriert und nicht darauf, in welchem page-Element sich der aktuelle Zustand befindet. Die folgenden Codes sind leicht zu verstehen und fügen den Anfang des HTML-Tags hinzu, wie <html><head><body> usw., beachten Sie, dass attrs die Attribute des Tags speichert, z.B. <page> mit name="shouting" und name="index", dann speichert attrs das name="shouting" usw., um den Namen der HTML-Datei zu erhalten, die in attrs als name-Attribute mit shouting und index als Dateinamen existiert, auf dasselbe Prinzip wird das href=…… im <a>-Tag durch diese Daten abgerufen, die in den Variablen str und val gespeichert werden und durch write in die Datei geschrieben werden.

dann wird endelement aufgerufen, wenn </h1> solche Endtags hinzugefügt, wenn es sich um das Dateiende handelt, dann ist es </page> und dann wird </html>、</body> diese HTML-Endtags hinzufügen, andernfalls sind es die Endelemente der Seite page

characters fügt die Zeichenkette zwischen dem Anfangs- und Endtag hinzu

Nachdem wir den Python-Code ausgeführt haben, können wir zwei HTML-Dateien im gleichen Verzeichnis sehen: shouting.html und index.html. Wenn Sie index.html öffnen, sehen Sie einen Link namens "shouting", auf den Sie klicken können, um shouting.html zu öffnen.

Hiermit ist der gesamte Inhalt, den der Autor über die Implementierung der Konvertierung von XML-Dateien in HTML-Dateien mit Python geteilt hat, abgeschlossen. Hoffentlich dient dies als Referenz für Sie und hoffentlich unterstützen Sie die Anleitung zum Schreien.

Erklärung: Dieser Artikel wurde aus dem Internet übernommen und gehört dem Urheber. Der Inhalt wurde von Internetbenutzern freiwillig beigesteuert und hochgeladen. Diese Website besitzt keine Eigentumsrechte und hat den Inhalt nicht manuell bearbeitet. Sie übernimmt keine Haftung für rechtliche Konsequenzen. Wenn Sie Inhalte finden, die möglicherweise gegen das Urheberrecht verstoßen, freuen wir uns über Ihre E-Mail an: notice#w3Anzeige: Der Inhalt dieses Artikels wurde aus dem Internet übernommen und gehört dem Urheber. Der Inhalt wurde von Internetbenutzern freiwillig beigesteuert und hochgeladen. Diese Website besitzt keine Eigentumsrechte und hat den Inhalt nicht manuell bearbeitet. Sie übernimmt keine Haftung für rechtliche Konsequenzen. Wenn Sie Inhalte finden, die möglicherweise gegen das Urheberrecht verstoßen, senden Sie bitte eine E-Mail an: notice#w

Vermutlich gefällt Ihnen