簡體   English   中英

如何使用MEL或XPATH表達式在Mule中獲取XML節點名稱

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM