programing

Python에서 XSLT를 사용하여 XML 파일을 변환하는 방법은 무엇입니까?

nasanasas 2020. 12. 24. 23:49
반응형

Python에서 XSLT를 사용하여 XML 파일을 변환하는 방법은 무엇입니까?


좋은 날! Python에서 xslt를 사용하여 xml을 변환해야합니다. PHP에 샘플 코드가 있습니다.

이것을 파이썬으로 구현하는 방법이나 비슷한 것을 찾을 수있는 곳은? 감사합니다!

$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);

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))

LXML 은 libxml2 및 libxslt를 기반으로 파이썬에서 XML 처리를 위해 널리 사용되는 고성능 라이브러리입니다. 여기에는 XSLT 용 기능도 포함되어 있습니다 .


가장 좋은 방법은 lxml을 사용하는 것이지만 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)

XSLT 2를 사용하려면 Use saxon with python 에서 옵션을 확인할 수 있습니다.

참조 URL : https://stackoverflow.com/questions/16698935/how-to-transform-an-xml-file-using-xslt-in-python

반응형