0

私はこのようなxmlを持っています:

<order>
  <orderheader>
    <orderissuedate>1/11/2013</orderissuedate>
  </orderheader>
</order>

INFO で設定されたミュール ロガー コンポーネントには、orderissuedate 1/11/2013 を出力しようとするミュール式があります。

私は次の表現を使用します。

[xpath('/order/orderheader//orderissuedate')] は機能しませんでした。

私も試しました: #[xpath('/order/orderheader/orderissuedate/text()').text] これも機能しませんでした。

正しい xpath 式を教えてください。次のエラー メッセージが表示されます。

java.lang.RuntimeException: org.mule.api.MuleRuntimeException: XPath 式の評価に失敗しました: "/Order/OrderHeader/OrderIssueDate/text()"

オンラインの xpath チェッカーを使用してこれらの xpath 式をテストしたところ、動作するようです。ご協力いただきありがとうございます。

元のxmlは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE Order>
<Order
      xmlns:core="rrn:org.xcbl:schemas/xcbl/v4_0/core/core.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <OrderHeader>
    <OrderNumber>
      <BuyerOrderNumber>111111</BuyerOrderNumber>
    </OrderNumber>
    <OrderIssueDate>2013-06-28T08:40:12</OrderIssueDate>
    <OrderReferences>
      <AccountCode>
        <core:RefNum></core:RefNum>
      </AccountCode>
    </OrderReferences>
  </OrderHeader>
</Order>

およびラバからのエラー出力:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
java.lang.RuntimeException: org.mule.api.MuleRuntimeException: Failed to evaluate XPath expression: "/OrderIssueDate"
    at org.mule.module.xml.el.XPathFunction.call(XPathFunction.java:50)
    at org.mule.el.mvel.MVELFunctionAdaptor.call(MVELFunctionAdaptor.java:38)
    at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getMethod(ReflectiveAccessorOptimizer.java:1011)
    at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getMethod(ReflectiveAccessorOptimizer.java:987)
    at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:377)
    at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.optimizeAccessor(ReflectiveAccessorOptimizer.java:143)
    at org.mvel2.ast.ASTNode.optimize(ASTNode.java:159)
    at org.mvel2.ast.ASTNode.getReducedValueAccelerated(ASTNode.java:115)
    at org.mvel2.MVELRuntime.execute(MVELRuntime.java:85)
    at org.mvel2.compiler.CompiledExpression.getDirectValue(CompiledExpression.java:123)
    at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:119)
    at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:113)
    at org.mvel2.MVEL.executeExpression(MVEL.java:942)
    at org.mule.el.mvel.MVELExpressionExecutor.execute(MVELExpressionExecutor.java:50)
    at org.mule.el.mvel.MVELExpressionLanguage.evaluateInternal(MVELExpressionLanguage.java:214)
    at org.mule.el.mvel.MVELExpressionLanguage.evaluate(MVELExpressionLanguage.java:163)
    at org.mule.el.mvel.MVELExpressionLanguage.evaluate(MVELExpressionLanguage.java:142)
    at org.mule.expression.DefaultExpressionManager.evaluate(DefaultExpressionManager.java:220)
    at org.mule.expression.DefaultExpressionManager$2.match(DefaultExpressionManager.java:481)
    at org.mule.util.TemplateParser.parse(TemplateParser.java:153)
    at org.mule.util.TemplateParser.parse(TemplateParser.java:130)
    at org.mule.expression.DefaultExpressionManager.parse(DefaultExpressionManager.java:477)
    at org.mule.expression.DefaultExpressionManager.parse(DefaultExpressionManager.java:436)
    at org.mule.api.processor.LoggerMessageProcessor.log(LoggerMessageProcessor.java:89)
    at org.mule.api.processor.LoggerMessageProcessor.process(LoggerMessageProcessor.java:71)
    at org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:27)
    at org.mule.execution.MessageProcessorNotificationExecutionInterceptor.execute(MessageProcessorNotificationExecutionInterceptor.java:61)
    at org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:47)
    at org.mule.processor.chain.DefaultMessageProcessorChain.doProcess(DefaultMessageProcessorChain.java:95)
    at org.mule.processor.chain.AbstractMessageProcessorChain.process(AbstractMessageProcessorChain.java:70)
    at org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:27)
    at org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:47)
    at org.mule.processor.AbstractInterceptingMessageProcessorBase.processNext(AbstractInterceptingMessageProcessorBase.java:106)
    at com.mulesoft.mule.module.datamapper.processors.DataMapperMessageProcessor.process(DataMapperMessageProcessor.java:132)
    at org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:27)
    at org.mule.execution.MessageProcessorNotificationExecutionInterceptor.execute(MessageProcessorNotificationExecutionInterceptor.java:61)
    at org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:47)
    at org.mule.processor.AbstractInterceptingMessageProcessorBase.processNext(AbstractInterceptingMessageProcessorBase.java:106)
    at org.mule.interceptor.AbstractEnvelopeInterceptor.process(AbstractEnvelopeInterceptor.java:55)
    at org.mule.processor.AsyncInterceptingMessageProcessor.processNextTimed(AsyncInterceptingMessageProcessor.java:122)
    at org.mule.processor.AsyncInterceptingMessageProcessor$AsyncMessageProcessorWorker$1.process(AsyncInterceptingMessageProcessor.java:192)
    at org.mule.processor.AsyncInterceptingMessageProcessor$AsyncMessageProcessorWorker$1.process(AsyncInterceptingMessageProcessor.java:185)
    at org.mule.execution.ExecuteCallbackInterceptor.execute(ExecuteCallbackInterceptor.java:20)
    at org.mule.execution.HandleExceptionInterceptor.execute(HandleExceptionInterceptor.java:34)
    at org.mule.execution.HandleExceptionInterceptor.execute(HandleExceptionInterceptor.java:18)
    at org.mule.execution.BeginAndResolveTransactionInterceptor.execute(BeginAndResolveTransactionInterceptor.java:58)
    at org.mule.execution.ResolvePreviousTransactionInterceptor.execute(ResolvePreviousTransactionInterceptor.java:48)
    at org.mule.execution.SuspendXaTransactionInterceptor.execute(SuspendXaTransactionInterceptor.java:54)
    at org.mule.execution.ValidateTransactionalStateInterceptor.execute(ValidateTransactionalStateInterceptor.java:44)
    at org.mule.execution.IsolateCurrentTransactionInterceptor.execute(IsolateCurrentTransactionInterceptor.java:44)
    at org.mule.execution.ExternalTransactionInterceptor.execute(ExternalTransactionInterceptor.java:52)
    at org.mule.execution.RethrowExceptionInterceptor.execute(RethrowExceptionInterceptor.java:32)
    at org.mule.execution.RethrowExceptionInterceptor.execute(RethrowExceptionInterceptor.java:17)
    at org.mule.execution.TransactionalErrorHandlingExecutionTemplate.execute(TransactionalErrorHandlingExecutionTemplate.java:113)
    at org.mule.execution.TransactionalErrorHandlingExecutionTemplate.execute(TransactionalErrorHandlingExecutionTemplate.java:34)
    at org.mule.processor.AsyncInterceptingMessageProcessor$AsyncMessageProcessorWorker.doRun(AsyncInterceptingMessageProcessor.java:184)
    at org.mule.work.AbstractMuleEventWork.run(AbstractMuleEventWork.java:43)
    at org.mule.work.WorkerContext.run(WorkerContext.java:311)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: org.mule.api.MuleRuntimeException: Failed to evaluate XPath expression: "/OrderIssueDate"
    at org.mule.module.xml.expression.AbstractXPathExpressionEvaluator.evaluate(AbstractXPathExpressionEvaluator.java:144)
    at org.mule.expression.DefaultExpressionManager.evaluate(DefaultExpressionManager.java:311)
    at org.mule.expression.DefaultExpressionManager.evaluate(DefaultExpressionManager.java:230)
    at org.mule.expression.DefaultExpressionManager.evaluate(DefaultExpressionManager.java:186)
    at org.mule.module.xml.el.XPathFunction.call(XPathFunction.java:43)
    ... 60 more
Caused by: org.mule.api.transformer.TransformerException: Could not find a transformer to transform "SimpleDataType{type=java.util.LinkedHashMap, mimeType='*/*'}" to "SimpleDataType{type=org.dom4j.Document, mimeType='*/*'}".
    at org.mule.registry.MuleRegistryHelper.lookupTransformer(MuleRegistryHelper.java:252)
    at org.mule.DefaultMuleMessage.getPayload(DefaultMuleMessage.java:355)
    at org.mule.DefaultMuleMessage.getPayload(DefaultMuleMessage.java:313)
    at org.mule.module.xml.expression.AbstractXPathExpressionEvaluator.getPayloadForXPath(AbstractXPathExpressionEvaluator.java:154)
    at org.mule.module.xml.expression.AbstractXPathExpressionEvaluator.evaluate(AbstractXPathExpressionEvaluator.java:115)
    ... 64 more
ERROR 2013-08-26 00:40:49,893 [[mule_egc2].EGC_FlowFlow1.stage1.02] org.mule.exception.DefaultMessagingExceptionStrategy: 
********************************************************************************
Message               : Could not find a transformer to transform "SimpleDataType{type=java.util.LinkedHashMap, mimeType='*/*'}" to "SimpleDataType{type=org.dom4j.Document, mimeType='*/*'}".
Code                  : MULE_ERROR-236
--------------------------------------------------------------------------------
Exception stack is:
1. Could not find a transformer to transform "SimpleDataType{type=java.util.LinkedHashMap, mimeType='*/*'}" to "SimpleDataType{type=org.dom4j.Document, mimeType='*/*'}". (org.mule.api.transformer.TransformerException)
  org.mule.registry.MuleRegistryHelper:252 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transformer/TransformerException.html)
--------------------------------------------------------------------------------
Root Exception stack trace:
org.mule.api.transformer.TransformerException: Could not find a transformer to transform "SimpleDataType{type=java.util.LinkedHashMap, mimeType='*/*'}" to "SimpleDataType{type=org.dom4j.Document, mimeType='*/*'}".
    at org.mule.registry.MuleRegistryHelper.lookupTransformer(MuleRegistryHelper.java:252)
    at org.mule.DefaultMuleMessage.getPayload(DefaultMuleMessage.java:355)
    at org.mule.DefaultMuleMessage.getPayload(DefaultMuleMessage.java:313)
    + 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
********************************************************************************
4

6 に答える 6

3

これを使って:

<logger message="OrderIssueDate is #[xpath('//Order/OrderHeader/OrderIssueDate').text]" level="INFO" /> 

XML 要素階層で大文字と小文字を正しく使用するようにしてください。order上位の XML にありOrder、下位の XML などにあります。

于 2013-08-26T13:48:26.177 に答える
2

私によれば機能するxpath式は#[xpath://orderissuedate]、ロガーを使用して印刷するには、次のようなものを使用する必要があります<logger message="#[xpath://orderissuedate]" level="INFO"/>

于 2013-08-26T04:06:50.407 に答える
0

回答の1つに関する会話から、次の解決策が機能するはずです。

<logger message="Value of Order Issue Date  #[xpath('//OrderIssueDate').text]"  level="INFO" />

Order の DTD も提供されるとよいでしょう。

于 2013-08-26T14:05:54.467 に答える