2

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

2 回答 2

5

这是正确的 MEL 表达式:

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

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

于 2012-10-25T22:03:54.043 回答
0

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

于 2014-11-04T03:31:57.393 回答