Mule XML流式传输-(Mule xmltoxmltransformation)

Mule XML流式传输-(Mule xmltoxmltransformation),mule,Mule,尝试使用Mule XML流功能,因为它必须处理非常大的XML文件。遵循文档,文档中没有具体的示例 当我检查有效负载时,得到的是XMLUtils类,而不是文档中所述的XMLStreamReader类 流程如下:有一个文件连接器,它将有效负载传递给一个定制的转换器,转换器将数据传递给一个Springbean,Springbean将进行基于事件的处理 在春天的豆子里。在运行时,Springbean获取XMLUtils类,而不是XMLStreamReader类 Mule-Config: <spri

尝试使用Mule XML流功能,因为它必须处理非常大的XML文件。遵循文档,文档中没有具体的示例

当我检查有效负载时,得到的是XMLUtils类,而不是文档中所述的XMLStreamReader类

流程如下:有一个文件连接器,它将有效负载传递给一个定制的转换器,转换器将数据传递给一个Springbean,Springbean将进行基于事件的处理

在春天的豆子里。在运行时,Springbean获取XMLUtils类,而不是XMLStreamReader类

Mule-Config:

<spring:beans>
   <spring:bean id="OracleCDMMapper" class="oraclecdmstream.OracleCDMMapper"> 
</spring:bean>
<spring:bean id = "OraclePaySlip" class="com.nect.transform.OracleCDMPaySlip" ></spring:bean>

</spring:beans>

<flow name="mulefileconnectorexampleFlow1" >
        <file:inbound-endpoint path="C:/c-OracleCloud/src/main/resources" pollingFrequency="600000" moveToDirectory="C:/c-OracleCloud/src/main/resources/back"  doc:name="File Input" >
           <!--  <file:filename-regex-filter pattern="(^*.xml$)" caseSensitive="false"/>
 -->            <file:filename-wildcard-filter pattern="*.xml"></file:filename-wildcard-filter>
        </file:inbound-endpoint>
        <logger message="Transferring file : #[message.inboundProperties['originalFilename']]" level="INFO" doc:name="Logger"/>
        <logger message ="Logger 1 "  level="INFO" doc:name ="Logger1" />
        <!--  Call the XMLSTREAMER  -->
       **<custom-transformer name="XmlToXSR" class="org.mule.module.xml.transformer.XmlToXMLStreamReader" doc:name="XMLTOORACLE">**

        </custom-transformer>

         <component doc:name="Java">
              <spring-object bean="OracleCDMMapper"/>
        </component>


   -->      
        <logger message ="I am Complete "  level="INFO" doc:name ="LoggerMurali" />


    </flow>


</mule>

非常感谢您提供的任何帮助

我已经验证过,您是对的,在代码中,假定的返回类应该是一个实现
XMLStreamReader
DelegateXMLStreamReader
类,但是返回的类是
XMLUtils
的匿名内部类,在运行时不能将其强制转换为任何流类。这似乎是一个缺陷

如果确实需要控制xml流,可以使用自定义java组件:

 <component class="com.foo.CustomJavaComponent" doc:name="Java"/>

并让输入流执行任何您想要的操作。

您确定您得到的是XMLUtils实例吗?在源代码中有几个地方,我看到它返回了一个确实实现了XMLStreamReader的匿名内部类。如果您在类上使用tostring(),这将显示为类似XMLUtils$2的内容。也可以尝试记录getClass().getName()或getFullName()。感谢您的更新,我将转到一个自定义组件
 <component class="com.foo.CustomJavaComponent" doc:name="Java"/>
public class CustomJavaComponent implements Callable{

    @Override
    public Object onCall(MuleEventContext eventContext) throws Exception {
        MuleMessage muleMessage = eventContext.getMessage();

        FileInputStream fis = (FileInputStream)muleMessage.getPayload();
        //Do something with this stream

        return "Hello world";
    }
}