使用lxml XSLT输出

时间:2019-01-16 15:39:54

标签: python-3.x xslt lxml

我使用Python和lxml。 我试图将XML转换的结果附加到另一个XML对象,这会导致错误的类型错误。

我有两个要合并在同一XML树中的xml文件,但是首先我需要对这两个文件之一应用XSLT转换。 如果我将XSLT的结果转换为字符串然后解析回它,则可以使用,但是我宁愿跳过此步骤,直接使用XSLT输出。

#Code that works:
xsl = etree.XSLT(etree.parse('Stylesheet.xsl'));
xml = etree.fromstring('<ROOT/>');
xml.append(etree.parse('FileA.xml')));
xml.append(etree.fromstring(str(xsl(etree.parse('FileB.xml')))));
#Code that results in an error:
xsl = etree.XSLT(etree.parse('Stylesheet.xsl'));
xml = etree.fromstring('<ROOT/>');
xml.append(etree.parse('FileA.xml')));
xml.append(xsl(etree.parse('FileB.xml')));

错误消息如下:

TypeError: Argument 'element' has incorrect type (expected lxml.etree._Element, got lxml.etree._XSLTResultTree)

1 个答案:

答案 0 :(得分:0)

API文档建议

 xml.append(xsl(etree.parse('FileB.xml')).getroot());

应该起作用,即与其尝试附加整个结果树,不如简单地附加其根元素。