【发布时间】:2016-04-01 09:53:20
【问题描述】:
我的项目中有一个奇怪的问题,比如我在 web 服务调用程序中遇到错误
ERROR: 'DOM Level 3 Not implemented
在我的本地机器上使用 JAVA 1.6.0_45 运行时。从我的项目中删除 XALAN.jar 之后。 在我替换的一堂课中
import org.apache.xml.utils.QName;
与
import javax.xml.namespace.QName; //its from jaxrpc.jar
尝试应用转换时出现错误
TransformerFactory xf = TransformerFactory.newInstance();
try {
Document responseDocument = (Document) object.newDomNode(options);
Transformer xformer = xf.newTransformer();
xformer.setOutputProperty(OutputKeys.METHOD, "xml");
xformer.setOutputProperty(OutputKeys.INDENT, "yes");
xformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
StringWriter writer = new StringWriter();
Result out = new StreamResult(writer);
if (!xmlEscape) {
ProcessingInstruction pi = responseDocument
.createProcessingInstruction(
Result.PI_DISABLE_OUTPUT_ESCAPING, "");
responseDocument
.getDocumentElement()
.getParentNode()
.insertBefore(pi, responseDocument.getDocumentElement());
}
xformer.transform(new DOMSource(responseDocument), out);
// remove the <![CDATA[ before returning the response
return removeCdata(writer.getBuffer().toString());
} catch (TransformerConfigurationException e) {
throw new XMLSchemaException(
"Unable to generate request message due to " + e);
} catch (IllegalArgumentException e) {
throw new XMLSchemaException(
"Unable to generate request message due to " + e);
} catch (TransformerException e) {
throw new XMLSchemaException(
"Unable to generate request message due to " + e);
}
错误发生在一行
xformer.transform(new DOMSource(responseDocument), out);
如有任何帮助,我们将不胜感激。
EDIT:这个错误的主要原因是
TransformerFactory xf = TransformerFactory.newInstance();
返回weblogic.xml.jaxp.RegistrySAXTransformerFactory@16849e2a的实例
而不是
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl
它是 JAVA 6 中transformerfactory 的默认实例。
【问题讨论】: