【问题标题】:How to Extract Text Node Value From Payload Using XPath in MEL如何在 MEL 中使用 XPath 从有效负载中提取文本节点值
【发布时间】:2015-12-21 13:56:59
【问题描述】:

我想从消息的 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>

【问题讨论】:

    标签: mule


    【解决方案1】:

    这是正确的 MEL 表达式:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多