明确指定mule的DOM解析器

时间:2012-05-21 10:26:35

标签: dom mule xerces

我有一个服务器端Web应用程序代码,它使用mule来使用xml消息并进行一些处理。最近我转移到一个新的tomcat版本。当mule尝试将xml转换为dom时,我看到以下错误。

Exception Stack trace: 

1。 org.apache.xerces.parsers.XIncludeAwareParserConfiguration无法强制转换为org.apache.xerces.xni.parser.XMLParserConfiguration(java.lang.ClassCastException)   org.apache.xerces.parsers.DOMParser:-1(null) 2. org.apache.xerces.parsers.XIncludeAwareParserConfiguration无法强制转换为org.apache.xerces.xni.parser.XMLParserConfiguration(java.lang.ClassCastException)(org.mule.api.transformer.TransformerException)   org.mule.module.xml.transformer.XmlToDomDocument:64(http://www.mulesource.org/docs/site/current2/apidocs/org/mule/api/transformer/TransformerException.html)

Root异常堆栈跟踪: java.lang.ClassCastException:org.apache.xerces.parsers.XIncludeAwareParserConfiguration无法强制转换为org.apache.xerces.xni.parser.XMLParserConfiguration         在org.apache.xerces.parsers.DOMParser。(未知来源)         在org.apache.xerces.parsers.DOMParser。(未知来源)         在org.apache.xerces.jaxp.DocumentBuilderImpl。(未知来源)         在com.sun.org.apache.xalan.internal.xsltc.trax.SAX2DOM.createDocument(SAX2DOM.java:324)的org.apache.xerces.jaxp.DocumentBuilderFactoryImpl.newDocumentBuilder(未知来源)         在com.sun.org.apache.xalan.internal.xsltc.trax.SAX2DOM。(SAX2DOM.java:84)         at com.sun.org.apache.xalan.internal.xsltc.runtime.output.TransletOutputHandlerFactory.getSerializationHandler(TransletOutputHandlerFactory.java:187)         at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.getOutputHandler(TransformerImpl.java:392)         at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:298)         在org.mule.module.xml.transformer.XmlToDomDocument.doTransform(XmlToDomDocument.java:58)         at org.mule.transformer.AbstractTransformer.transform(AbstractTransformer.java:254)

我认为这是因为我的WEB-INF / lib导演中的xerces 2.9.1。我取出了罐子,它工作得很好。问题是我在我的lib中需要那个jar,因为lib中还有一些其他传统的第3个pary jar需要在classpath中使用xerces的版本。

  1. 有没有办法可以指定一个不同的DOM解析器,并让mule从类路径中选择它。
  2. 我检查了xerces java doc,XIncludeAwareParserConfiguration确实实现了XMLParserConfiguration。不知道为什么要投放一个课堂广播?
  3. Thnks

1 个答案:

答案 0 :(得分:0)

Mule的AbstractXmlTransformer提供了多种配置选项,包括setXMLInputFactory我认为可以帮助您实现目标。

问题是这些配置选项不是在XML级别提供的,因此您必须将XmlToDomDocument声明为自定义转换器,以便在其上设置不同的属性。