我有一个简单的要求......我有一个xml文件: -
<Service>
<Name>Abcd</Name>
<Age>28</Age>
</Service>
现在我的要求是使用XPATH或MEL显示节点名称... 到目前为止,我尝试了各种XPATH表达式,如下所示: -
<flow name="Flow1WManager" doc:name="newFlow">
<file:inbound-endpoint responseTimeout="10000" connector-ref="File_Input" doc:name="File" path="E:\backup\test">
<file:filename-regex-filter pattern="aa.xml" caseSensitive="false"/>
</file:inbound-endpoint>
<logger message="NodeName1 : #[xpath-node://Service/*[1]/node()]" level="INFO" doc:name="Logger" />
<logger message="NodeName2 : #[xpath-node://.[xpath:local-name()='Service']/*/node()]" level="INFO" doc:name="Logger" />
<logger message="NodeName3 : #[xpath-node://.[xpath:local-name()='Service']/.[xpath:local-name()]/node()]" level="INFO" doc:name="Logger" />
</flow>
但我正在控制台中关注: -
INFO 2014-08-14 23:03:28,915 [[XPATHWithLocal-name].Flow1WManager.stage1.02] org.mule.api.processor.LoggerMessageProcessor: NodeName1 : org.dom4j.tree.DefaultText@5fffd6fd [Text: "Abcd"]
INFO 2014-08-14 23:03:28,921 [[XPATHWithLocal-name].Flow1WManager.stage1.02] org.mule.api.processor.LoggerMessageProcessor: NodeName2 : [org.dom4j.tree.DefaultText@5fffd6fd [Text: "Abcd"], org.dom4j.tree.DefaultText@1bb3db1b [Text: "28"]]
INFO 2014-08-14 23:03:28,923 [[XPATHWithLocal-name].Flow1WManager.stage1.02] org.mule.api.processor.LoggerMessageProcessor: NodeName3 : [org.dom4j.tree.DefaultText@1a1b4f86 [Text: "
"], org.dom4j.tree.DefaultDocument@1123b146 [Document: name null], org.dom4j.tree.DefaultText@157bad48 [Text: "
"], org.dom4j.tree.DefaultDocument@3e4b7374 [Document: name null], org.dom4j.tree.DefaultText@3cf5d7d2 [Text: "
"]]
我使用了local-name XPath function
..但无法获取节点名称..我错过了什么..请帮忙
答案 0 :(得分:1)
简单的Xpath语句
服务 - #[xpath('xpath:name(/*)')]
名称 - #[xpath('xpath:name(/Service/Name)')]
年龄 - #[xpath('xpath:name(/Service/Age)')]
如果您不知道节点名称
名称 - xpath('xpath:name(/Service/*[1])')
年龄 - xpath('xpath:name(/Service/*[2])')
答案 1 :(得分:0)
尝试使用以下代码。它正在工作。
NAME =====> #[xpath3('//Service/Name')]
AGE -======> #[xpath3('//Service/Age')]
答案 2 :(得分:0)
XML示例有效载荷:
<?xml version="1.0" encoding="UTF-8"?>
<response>
<field type="0" name="visit">TEST</field>
<field type="0" name="latitude">1.23</field>
<field type="0" name="longitude">1.23</field>
<field type="0" name="comments">TEST</field>
</response>
MEL xpath3:
#[xpath3('/response/field[@name=\'visit\']',payload, 'STRING')]
尝试
FOR NAME:
#[xpath3('/Service/Name',payload, 'STRING')]
FOR AGE:
#[xpath3('/Service/Age',payload, 'NUMBER')]
参数 xpath3(0,1,2)
0:XPath表达式。
1:输入文档。
2:输出选项:BOOLEAN,STRING,NUMBER,NODESET,NODE或{},这总是返回字符串列表