0

我的 JMS 主题中有消息要读取并使用 Mule JDBC 数据库适配器存储在表中,我知道我必须将 JMS XML 消息转换为映射有效负载以便轻松将其放入 JDBC。这里是样本流程:

<flow name="DBLoggerFlow">
  <jms:inbound-endpoint topic="${topic.logTopic}"
         connector-ref="jmsConnector" doc:name="JMS">
    <jms:transaction action="NONE" timeout="${queue.transaction.timeout}" />
  </jms:inbound-endpoint>
  <jdbc:xml-to-maps-transformer name="XMLToMaps"/>
  <jdbc:outbound-endpoint queryKey="insertion"
           connector-ref="insertionConnector"/>
</flow>

但是,当我运行代码时出现此错误:

错误 2013-02-01 13:00:26,427 [WrapperListener_start_runner] org.mule.module.launcher.application.DefaultMuleApplication: null
org.xml.sax.SAXParseException:cvc-complex-type.2.4.a:发现以元素“jdbc:xml-to-maps-transformer”开头的无效内容。' 之一是预期的。
        在 org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(未知来源)
        在 org.apache.xerces.util.ErrorHandlerWrapper.error(未知来源)
        在 org.apache.xerces.impl.XMLErrorReporter.reportError(未知来源)
        在 org.apache.xerces.impl.XMLErrorReporter.reportError(未知来源)
        在 org.apache.xerces.impl.XMLErrorReporter.reportError(未知来源)
        在 org.apache.xerces.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(未知来源)
        在 org.apache.xerces.impl.xs.XMLSchemaValidator.reportSchemaError(未知来源)
        在 org.apache.xerces.impl.xs.XMLSchemaValidator.handleStartElement(未知来源)

为什么 XML 到 Map 的转换在这里是个问题?有没有替代或更好的方法来做到这一点?

4

1 回答 1

0

为什么 XML 到 Map 的转换在这里是个问题?

仅在xml-to-maps-transformerMule Entreprise Edition 中可用:您可能在 CE 上运行。

有没有替代或更好的方法来做到这一点?

在 JDBC 语句中使用 MELxpath()表达式直接从 XML 有效负载中检索值并将它们传递给 DB。

阅读 MEL 备忘单以获取语法信息:http: //blogs.mulesoft.org/wp-content/uploads/2012/12/refcard-mel.pdf

于 2013-02-01T23:32:02.933 回答