<http:listener config-ref="HTTP_Listener_Configuration" path="/order" allowedMethods="POST" doc:name="HTTP"/>
<splitter expression="#[xpath3('//elements/element',payload,'NODESET')]" doc:name="Splitter"/>
我的输入xml
<?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>
这不会返回任何结果。如果我将输入xml更改为下面,分割器将返回resutls
<?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>
请注意,我改变的只是xmlns到xmlns:<elements xmlns="http://xxx/xxservice">
是什么原因?
答案 0 :(得分:0)
这完全是由命名空间问题引起的。如果您拥有企业许可证,则可以提出购买Mule支持的票证
或者您可以尝试在 XPATH3 中动态跳过命名空间,并可以使用下面的mulexml:dom-to-xml-transformer
来提取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"/>
上面的表达式适用于您在此处提供的 命名空间 ,您可以获得没有任何问题的xml元素值和分割器不会抱怨