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

Méthode d'implémentation pour convertir un fichier xml en fichier html avec python

la fonction est comme décrite dans le titre, mon python2.7, installé dans un environnement Windows, les outils de développement que j'utilise sont wingide 6.0

1、d'abord, voici un fichier xml simple que j'ai conçu, c'est-à-dire le fichier source à parser

ci-dessous est le contenu du fichier website.xml :

<website>
<page name="index" title="[#1#]">
	<h1> bienvenu à</h1>
	<p>ceci est un moment</<p>
<ul>
<li><a href="shouting.html" rel="external nofollow" >Shouting</a></li>
</ul>
</page>
<page name="shouting" title="[#2#]">
<h1>Mon nom est 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())

Explication du code :

L'utilisation de la méthode 'parse' de la méthode xml.sax pour analyser, en créant une classe d'analyse personnalisée qui hérite de ContentHandler, où les méthodes 'startelement', 'endelement' et 'charactors' sont redéfinies. La méthode 'startelement' est appelée lorsque l'on trouve une balise de début dans le fichier XML, comme <a> ou <h1> La variable 'passthrough' est utilisée pour déterminer si nous sommes à l'intérieur d'une balise 'page', où true signifie que nous sommes à l'intérieur de la balise 'page', c'est-à-dire que l'élément appartient à la page courante. Comme xml.sax se concentre sur les balises, il ne s'occupe pas de la page actuelle. Les codes suivants sont faciles à comprendre, ajoutant les balises de début de HTML <html><head><body> et autres. Notez que 'attrs' stocke les attributs des balises, par exemple, dans <page> avec name="shouting" et name="index", alors 'attrs' stocke ce qui suit: name="shouting". Cela permet de récupérer le nom 'shouting' et 'index' dans les attributs 'name' comme nom de fichier pour le fichier HTML. De même, pour <a> avec href=……, cela est également obtenu à partir de ces données et stocké dans les variables 'str' et 'val', puis écrit dans le fichier via 'write'.

ensuite endelement est lorsque vous atteignez </h1>, appeler ce type de balise de fin, ajouter des balises de fin, si c'est la fin du fichier, alors c'est </page> et à ce moment-là, ajoutez </html>、</Ajoutez les balises de fin de ces html dans body>, sinon, c'est la balise de fin des éléments de la page page

characters est ajouté aux chaînes entre les balises de début et de fin

Après avoir exécuté le code python, vous pouvez voir que deux fichiers html ont été générés dans le même répertoire, à savoir shouting.html et index.html. Ouvrez index.html pour voir un lien appelé "shouting", cliquez dessus pour ouvrir shouting.html

C'est tout ce que je partage avec vous aujourd'hui sur la méthode d'analyse de fichiers xml en fichiers html utilisant python. J'espère que cela vous donnera une idée, et j'espère que vous soutiendrez également le tutoriel de cri.

Déclaration : Le contenu de cet article est issu du réseau, propriété des auteurs respectifs, contribué et téléversé par les utilisateurs d'Internet. Le site ne détient pas de droits de propriété, n'a pas été édité par l'homme, et n'assume aucune responsabilité juridique. Si vous trouvez du contenu présumé de violation de droits d'auteur, veuillez envoyer un e-mail à : notice#oldtoolbag.com (veuillez remplacer # par @ lors de l'envoi d'un e-mail pour signaler une violation, et fournir des preuves pertinentes. Une fois vérifié, le site supprimera immédiatement le contenu présumé de violation de droits d'auteur.)

Vous pourriez aussi aimer