简体   繁体   English

在Mule中使用XML来映射变换

[英]Using XML to maps-transformer in Mule

I am trying to use the jdbc-ee:xml-to-maps-transformer` . 我正在尝试使用jdbc-ee:xml-to-maps-transformer`

In the flow below, the output at the final logger is empty. 在下面的流程中,最终记录器的输出为空。 I would have expected a Map object which I can use in the insert. 我本来可以在插入中使用Map对象。

There is some documentation available at 有一些可用的文档

http://www.mulesoft.org/documentation/display/34X/JDBC+Transport+Reference#JDBCTransportReference-BasicInsertUpdateDelete http://www.mulesoft.org/documentation/display/34X/JDBC+Transport+Reference#JDBCTransportReference-BasicInsertUpdateDelete

But doesn't help. 但这无济于事。 Any other information on web is quite sparse. 网络上的任何其他信息都很少。

 <flow name="inserttinoDBFlow3" doc:name="inserttinoDBFlow3">
    <file:inbound-endpoint responseTimeout="10000" doc:name="File" moveToDirectory="src/test/resources/out" path="src/test/resources/in"/>
    <file:file-to-string-transformer doc:name="File to String"/>
    <logger message="#[message.payload] :::::::::::::::::::::::::::::::::::: after object to string:::::::::::::::::::::::::::::::::::" level="INFO" doc:name="Logger"/>
    <mulexml:object-to-xml-transformer doc:name="Object to XML"/>
    <logger message="#[message.payload] :::::::::::::::::::::::::::::::::::: after object to xml :::::::::::::::::::::::::::::::::::" level="INFO" doc:name="Logger"/>
    <jdbc-ee:xml-to-maps-transformer doc:name="XML to Maps"/>
    <logger level="INFO" doc:name="Logger" message="#[message.payload]"/>
</flow>

Use a Object-to-XML transformer to transform a Java Object to XML data using XStream. 使用对象到XML转换器使用XStream将Java对象转换为XML数据。

So you in your flow have Java object of String type in message payload, and tranformer just packed this String in <string> node and encode XML specific characters. 因此,您的流程中在消息有效负载中具有String类型的Java对象,并且transformer将此字符串打包在<string>节点中并编码XML特定字符。 And this is not XML that we are wanted in this case. 在这种情况下,这不是我们想要的XML。

I removed object-to-xml transformer from your flow and it works. 我从您的流程中删除了对象到XML转换器,它可以正常工作。

 <flow name="inserttinoDBFlow3" doc:name="inserttinoDBFlow3">
    <file:inbound-endpoint responseTimeout="10000" doc:name="File" moveToDirectory="src/test/resources/out" path="src/test/resources/in"/>
    <file:file-to-string-transformer doc:name="File to String" encoding="UTF-8"/>
    <logger message=" :::::::::::::::::::::::::::::::::::: after object to string::::::::::::::::::::::::::::::::::: #[message.payload]" level="INFO" doc:name="Logger"/>
    <jdbc-ee:xml-to-maps-transformer doc:name="XML to Maps"/>
    <logger level="INFO" doc:name="Logger" message="#[message.payload]"/>
</flow>

input file 输入文件

<?xml version="1.0" encoding="utf-8"?>
<table>
  <record>
    <field name="id" type="java.math.BigDecimal">0</field>
    <field name="name" type="java.lang.String">hello</field>
  </record>
</table>

Remember that: 请记住:

  • the xml-to-maps transformer is available with Mule Entreprise Edition only; xml-to-maps转换器仅适用于Mule Entreprise Edition;
  • the XML transformed by the xml-to-maps transformer must be compliant to a specific schema 由xml-to-maps转换器转换的XML必须符合特定的架构

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM