Mule 如果输入xml中不存在xml namespace:前缀,则拆分器不会返回结果

Mule 如果输入xml中不存在xml namespace:前缀,则拆分器不会返回结果,mule,mule-component,dataweave,Mule,Mule Component,Dataweave,我的输入xml <http:listener config-ref="HTTP_Listener_Configuration" path="/order" allowedMethods="POST" doc:name="HTTP"/> <splitter expression="#[xpath3('//elements/element',payload,'NODESET')]" doc:name="Splitter"/> 2015-09-03T14:30

我的输入xml

 <http:listener config-ref="HTTP_Listener_Configuration" path="/order" allowedMethods="POST" doc:name="HTTP"/>
    <splitter expression="#[xpath3('//elements/element',payload,'NODESET')]" doc:name="Splitter"/>  

2015-09-03T14:30:36.000Z
用户1
2015-09-04T14:30:36.000Z
用户2
这不会返回任何结果。如果我将输入xml更改为以下,拆分器将返回Resultls

<?xml version="1.0" encoding="UTF-8"?>
<elements xmlns="http://xxx/xxservice">

    <element>
        <date>2015-09-03T14:30:36.000Z</order-date>
        <created-by>user1</created-by>

    </element>

      <element>
        <date>2015-09-04T14:30:36.000Z</order-date>
        <created-by>user2</created-by>

    </element>

</elements>

2015-09-03T14:30:36.000Z
用户1
2015-09-04T14:30:36.000Z
店面2
请注意,我在


原因是什么?

这完全是由于名称空间问题。如果你有企业许可证,你可以申请Mule支持

或者,您可以尝试在XPATH3中动态跳过名称空间,并可以在下面使用
mulexml:dom-to-xml-transformer
提取xml元素值:-

<?xml version="1.0" encoding="UTF-8"?>
<elements xmlns:a="http://xxx/xxservice">

    <element>
        <date>2015-09-03T14:30:36.000Z</order-date>
        <created-by>user1</created-by>

    </element>

      <element>
        <date>2015-09-04T14:30:36.000Z</order-date>
        <created-by>storefront2</created-by>

    </element>

</elements>

上面的表达式适用于这里提供的名称空间,您可以毫无问题地获取xml元素值,拆分器也不会抱怨

 <splitter expression="#[xpath3('/*:elements/*:element',payload,'NODESET')]" doc:name="Splitter"/>
 <mulexml:dom-to-xml-transformer doc:name="DOM to XML"/>
 <logger message="created-by: #[xpath3('/*:element/*:created-by',payload,'STRING')]" level="INFO" doc:name="Logger"/>
 <logger message="date: #[xpath3('/*:element/*:date',payload,'STRING')]" level="INFO" doc:name="Logger"/>