我使用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)
答案 0 :(得分:0)
API文档建议
xml.append(xsl(etree.parse('FileB.xml')).getroot());
应该起作用,即与其尝试附加整个结果树,不如简单地附加其根元素。