[英]How to get XML node name in Mule using MEL or XPATH expression
我有一個簡單的要求...我有一個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
..但無法獲取節點名稱..我缺少什么..請幫助
簡單的Xpath語句
服務- #[xpath('xpath:name(/*)')]
名稱- #[xpath('xpath:name(/Service/Name)')]
年齡- #[xpath('xpath:name(/Service/Age)')]
如果您不知道節點名稱Name- xpath('xpath:name(/Service/*[1])')
Age- xpath('xpath:name(/Service/*[2])')
嘗試下面的代碼。 工作正常
NAME =====> #[xpath3('//Service/Name')]
AGE -======> #[xpath3('//Service/Age')]
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或{},這總是返回字符串列表
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.