如何在MEL中使用XPath从有效负载中提取文本节点值

yos*_*key 2 mule

我想从消息的XML有效负载中提取一些文本值,以便我可以在jdbc查询中使用它们.

鉴于下面的测试XML文件,我想获得第一本书的作者文本节点的字符串值.

就像是:

INSERT INTO books VALUES (#[xpath('/catalog/book[0]/author/text()')])
Run Code Online (Sandbox Code Playgroud)

为了测试表达式,我只是使用记录器,但似乎无法正确提取它.

<logger message="#[xpath('/catalog/book[0]/author/text()')]" level="DEBUG" doc:name="Logger"/>
Run Code Online (Sandbox Code Playgroud)
<?xml version="1.0"?>
<catalog>
    <book id="bk101">
        <author>Gambardella, Matthew</author>
        <title>XML Developer's Guide</title>
        <genre>Computer</genre>
        <price>44.95</price>
        <publish_date>2000-10-01</publish_date>
   </book>
   <book id="bk102">
       <author>Ralls, Kim</author>
       <title>Midnight Rain</title>
       <genre>Fantasy</genre>
       <price>5.95</price>
       <publish_date>2000-12-16</publish_date>
   </book>
</catalog>
Run Code Online (Sandbox Code Playgroud)

Dav*_*sot 5

这是正确的MEL表达式:

#[xpath('/catalog/book[1]/author/text()').text]
Run Code Online (Sandbox Code Playgroud)

注意在XPath中,第一个节点是1而不是0.