简体   繁体   中英

Using XML to maps-transformer in Mule

I am trying to use the 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.

There is some documentation available at

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.

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. And this is not XML that we are wanted in this case.

I removed object-to-xml transformer from your flow and it works.

 <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;
  • the XML transformed by the xml-to-maps transformer must be compliant to a specific schema

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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