使用 lxml XSLT 输出
Using lxml XSLT output
我用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)
API 文档表明
xml.append(xsl(etree.parse('FileB.xml')).getroot());
应该可以,即您可以简单地附加其根元素,而不是尝试附加整个结果树。
我用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)
API 文档表明
xml.append(xsl(etree.parse('FileB.xml')).getroot());
应该可以,即您可以简单地附加其根元素,而不是尝试附加整个结果树。