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

Metodo di implementazione per convertire file xml in file html utilizzando 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.pagethrough = True
   self.out = open(attrs['name'] + '.html', 'w')
   self.out.write('<html>\n<head>\n')
   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())

Spiegazione del codice:

Utilizzando il metodo di parsing parse di xml.sax, ho creato una classe di parsing personalizzata che eredita ContentHandler, e all'interno di essa ho sovrascritto i metodi startelement e endelement oltre al metodo charactors, il metodo startelement viene chiamato quando si trova il tag di apertura del file xml, come <a> o <h1>, la variabile passthrough serve per determinare se ci si trova all'interno del tag page, true indica che si è all'interno del tag page, quindi l'elemento appartiene alla pagina corrente, poiché xml.sax si concentra sui tag e non si preoccupa di essere all'interno di quale page ci si trovi, quindi il codice successivo è facile da capire, è aggiungere i tag di apertura dell'html come <html><head><body> ecc., notare che attrs contiene le proprietà del tag, ad esempio <page> contiene name="shouting" o name="index", quindi attrs contiene il nome="shouting" o name="index" come nome del file html, allo stesso modo, il href=…… all'interno di <a> è anche recuperato da questi dati e memorizzato nei variabili str e val, e poi viene scritto nel file tramite write.

Poi endelement viene chiamato quando si raggiunge un tag di chiusura come </h1>, aggiungendo il tag di chiusura, se è la fine del file, allora è </page>, in questo caso aggiungi i tag di chiusura HTML come </html> e </body>, altrimenti è il tag di chiusura dell'elemento nella pagina page

characters aggiunge la stringa trovata tra l'etichetta di apertura e di chiusura

Dopo aver eseguito il codice Python, possiamo vedere che sono stati creati due file HTML nella stessa directory, ovvero shouting.html e index.html. Aprire index.html e vedere una collegamento chiamato “shouting”, cliccando su di esso aprirà shouting.html

Il metodo di implementazione descritto in questo articolo su come utilizzare Python per convertire un file XML in un file HTML condiviso dall'autore è tutto ciò che desidero condividere con voi. Spero che possa fornirvi una参考,e spero che tutti possano dare il loro sostegno e incoraggiamento al tutorial di urla.

Dichiarazione: il contenuto di questo articolo è stato tratto da Internet, il diritto d'autore spetta al proprietario originale, il contenuto è stato contribuito e caricato autonomamente dagli utenti di Internet, questo sito non detiene il diritto di proprietà, non è stato elaborato manualmente e non assume responsabilità per le responsabilità legali correlate. Se trovi contenuti sospetti di violazione del copyright, ti preghiamo di inviare un'e-mail a notice#oldtoolbag.com (al momento dell'invio dell'e-mail, sostituisci # con @) per segnalare e fornire prove pertinenti. Una volta verificata, questo sito eliminerà immediatamente il contenuto sospetto di violazione del copyright.

Ti potrebbe interessare