我的流程的配置为:
<flow name="addVendors" doc:name="addVendors">
<file:inbound-endpoint path="/ws/esb/vendors/input/" moveToDirectory="/ws/esb/vendors/processed/" responseTimeout="10000" doc:name="File"/>
<file:file-to-string-transformer mimeType="text/xml" doc:name="File to String"/>
<jdbc-ee:xml-to-maps-transformer encoding="UTF-8" mimeType="text/xml" doc:name="XML to Maps"/>
<component class="com.myapp.integration.VendorsHelper" doc:name="Java"/>
<file:outbound-endpoint path="/ws/esb/vendors/output" responseTimeout="10000" doc:name="File"/>
</flow>
我正在尝试发送以下xml:
<?xml version="1.0"?>
<book>
<note id="1">
note1
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
<author>Some author</author>
</note>
<note id="2">
note2
<to>Mark</to>
<from>Smith</from>
<heading>Invitation</heading>
<body>Invitation for birthday!</body>
<author>Some author</author>
</note>
</book>
问题是从xml到映射的转换后,我得到了两个空的哈希映射。我的代码有什么不正确?如何调试呢?
最佳答案
如documentation of the transformer中所述,由xml-to-maps
转换器转换的XML必须符合特定的架构(在文档中提供)。
这是有效的XML文档的示例:
<table>
<record>
<field name="id" type="java.math.BigDecimal">0</field>
<field name="name" type="java.lang.String">hello</field>
</record>
</table>
因此,您需要使用XSL-T转换器将XML转换为所需的XML格式,然后才能使用转换器。