我正在尝试通过从我的 java 代码中调用 XSLT 来转换 XML。我在将 XML 字符串作为参数传递给 XSLT 时遇到问题。这会导致异常:从“java.lang.String”到“node-set”的无效转换。
这是调用 XSLT 的方法:
Transformer l_transformer
=TransformerFactory.newInstance().newTransformer(xslt_file_path);
l_transformer.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-1");
l_transformer.setParameter("collateralDoc", param_xmlString);
StringWriter l_writer = new StringWriter();
StringReader l_reader = new StringReader(inputXML);
Source l_in = new StreamSource(l_reader);
Result l_out = new StreamResult(l_writer);
l_transformer.transform(l_in, l_out);
在搜索了一些解决方案后,我什至尝试从 param XML 字符串创建一个 Document 对象,并将 Document 对象传递给 setParameter 对象。然后我得到了这个例外:
从“com.sun.org.apache.xerces.internal.dom.DeferredDocumentImpl”到“node-set”的无效转换。
处理此输入 XML 参数的 XSLT 代码和引发异常的行:
<xsl:variable name="infoList" select="$paramXML/a/b"/>
我需要作为参数传递的参数 XML 如下所示:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<a>
<b>
<c>
<d>blah</d>
<e>blah</e>
</c>
<f>
<g>blah</g>
<h>blah</h>
</f>
</b>
</a>
请帮助我解决问题。