Comment transformer un fichier XML en utilisant XSLT en Python?

Bonne journée! Besoin de convertir xml en utilisant xslt en Python. J'ai un exemple de code en php.

Comment implémenter cela en Python ou où trouver quelque chose de similaire? Merci!!!!

$xmlFileName = dirname(__FILE__)."example.fb2";
$xml = new DOMDocument();
$xml->load($xmlFileName);

$xslFileName = dirname(__FILE__)."example.xsl";
$xsl = new DOMDocument;
$xsl->load($xslFileName);

// Configure the transformer
$proc = new XSLTProcessor();
$proc->importStyleSheet($xsl); // attach the xsl rules
echo $proc->transformToXML($xml);
50
demandé sur aphex 2013-05-22 22:17:49

3 réponses

En utilisant lxml ,

import lxml.etree as ET

dom = ET.parse(xml_filename)
xslt = ET.parse(xsl_filename)
transform = ET.XSLT(xslt)
newdom = transform(dom)
print(ET.tostring(newdom, pretty_print=True))
81
répondu unutbu 2013-05-22 18:23:50

LXML est une bibliothèque haute performance largement utilisée pour le traitement XML en python basée sur libxml2 et libxslt-elle inclut également des fonctionnalités pour XSLT .

5
répondu miku 2013-05-22 18:22:40

Le meilleur moyen est de le faire en utilisant lxml, mais il ne supporte que XSLT 1

import os
import lxml.etree as ET

inputpath = "D:\\temp\\"
xsltfile = "D:\\temp\\test.xsl"
outpath = "D:\\output"


for dirpath, dirnames, filenames in os.walk(inputpath):
            for filename in filenames:
                if filename.endswith(('.xml', '.txt')):
                    dom = ET.parse(inputpath + filename)
                    xslt = ET.parse(xsltfile)
                    transform = ET.XSLT(xslt)
                    newdom = transform(dom)
                    infile = unicode((ET.tostring(newdom, pretty_print=True)))
                    outfile = open(outpath + "\\" + filename, 'a')
                    outfile.write(infile)

Utiliser XSLT 2 vous pouvez vérifier les options de Utiliser saxon avec python

1
répondu Maliqf 2017-10-17 10:27:29