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

时间:2012-10-25 21:28:32

标签: mule

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

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

类似的东西:

INSERT INTO books VALUES (#[xpath('/catalog/book[0]/author/text()')])

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

<logger message="#[xpath('/catalog/book[0]/author/text()')]" level="DEBUG" doc:name="Logger"/>
<?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>

2 个答案:

答案 0 :(得分:5)

这是正确的MEL表达式:

#[xpath('/catalog/book[1]/author/text()').text]

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

答案 1 :(得分:0)

除了一件事,大卫的回答很好。对我来说, .text 无效。我不得不使用 .wholeText 。这可能是因为我在工作项目的某个地方使用了xerces实现。