L'informatique pour les littéraires

Renommer les éléments xml ou html avec python

Le code en python est probablement le plus synthétique pour convertir un fichier (ou un fragment de fichier) xml ou html. Voici le code pour renommer tous les éléments d’un fichier xml pour en faire du html utilisable dans un epub par exemple.

<SCENE>
 <REPLIQUE>
  <ACTEUR>Roméo</ACTEUR>
  <LIGNE>Salut Juliette</LIGNE>
  <LIGNE>Il est haut ton balcon</LIGNE>
 </REPLIQUE>
</SCENE>

devient:

<div class="SCENE">
 <div class="REPLIQUE">
  <p class="ACTEUR">Roméo</p>
  <p class="LIGNE">Salut Juliette</p>
  <p class="LIGNE">Il est haut ton balcon</p>
 </div>
</div>

convertXml.py

# Converts read an xml fragment and renames a tag
# pip install --upgrade lxml

import lxml.etree
import lxml.html

from lxml import etree
tree = etree.parse('Romeo.xml')
for tag in tree.iter():
    if not len(tag):
        tag.attrib['class']= tag.tag
        tag.tag = "p"
    else:
        tag.tag = "div"
        # print (tag.tag, tag.text)
print(lxml.etree.tostring(tree).decode())

Pour que le résultat soit transcrit dans un fichier, je lance le script avec

convertXml.py > output.txt

Voir les autres articles de la série: