如何在Python中使用XSLT转换XML文件?

aph*_*hex 61 python xml xslt converter

美好的一天!需要在Python中使用xslt转换xml.我在php中有一个示例代码.

如何在Python中实现这一点或在哪里找到类似的东西?谢谢!

$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);
Run Code Online (Sandbox Code Playgroud)

unu*_*tbu 100

使用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))
Run Code Online (Sandbox Code Playgroud)

  • 您好,我还有一个问题.如果xml文件很大,"newdom = transform(dom)"的效率非常差.我试图解析一个大的xml文件(> 100MB),转换成本需要很长时间(> 4小时).你对使用python lxml使用xslt转换xml文件有什么好的建议吗? (5认同)
  • 在引擎盖下,lxml使用[libxslt](http://xmlsoft.org/XSLT/)来转换XML.我不知道你能做些什么来加快这个速度.也许如果你在一个新问题上发布你的XSLT,有人可以建议改进. (2认同)
  • 使用 Python 3,在写入 stdout 时必须生成一个 unicode 字符串:`print(ET.tostring(newdom, Pretty_print=True,encoding="unicode"))` (2认同)

mik*_*iku 5

LXML是一个广泛使用的高性能库,用于基于libxml2和libxslt的python中的XML处理 - 它还包括XSLT的工具.