0

Camel 是否可以拆分以下 XML 消息

<?xml version="1.0" encoding="UTF-8"?>
<MyOrder>
<header>
    ....
</header>
<body>
    <item>
        <itemNumber>10</itemNumber>
        <itemType>A</itemType>
    </item>
    <item>
        <itemNumber>20</itemNumber>
        <itemType>B</itemType>
    </item>
    <item>
        <itemNumber>30</itemNumber>
        <itemType>C</itemType>
    </item>
</body>     
</MyOrder>

到以下 3 个部分:

1)

<?xml version="1.0" encoding="UTF-8"?>
<MyOrder>
<header>
    ....
</header>
<body>
    <item>
        <itemNumber>10</itemNumber>
        <itemType>A</itemType>
    </item>
</body>     
</MyOrder>

2)

<?xml version="1.0" encoding="UTF-8"?>
<MyOrder>
<header>
    ....
</header>
<body>
    <item>
        <itemNumber>20</itemNumber>
        <itemType>B</itemType>
    </item>
</body>     
</MyOrder>

3)

<?xml version="1.0" encoding="UTF-8"?>
<MyOrder>
<header>
    ....
</header>
<body>
    <item>
        <itemNumber>30</itemNumber>
        <itemType>C</itemType>
    </item>
</body>     
</MyOrder>

? 注意结果基于itemType标签,并且每条消息的 Header 都没有改变。拆分器 EIP 模式可以在这里提供帮助吗?请在这里分享您的想法!

4

2 回答 2

1

是的,首先设置标题,然后进行拆分。因为每个拆分的消息都将具有用于拆分的父消息的标头副本。

于 2013-08-05T07:19:25.117 回答
0

所以如果我理解你,你想按项目节点拆分 xml 文件,按类型对这些节点进行分组(我想你可以有几个 A、B、C 类型的项目 ...)并生成另一个 xml,一个按项目类型? 拆分器可以使用 xpath 表达式,所以如果您已经知道所有可能的类型,我认为您可以使用它。在这种情况下,我不知道拆分器是否会给您一个唯一的项目节点或与项目类型匹配的注释列表。您可能必须使用聚合器将它们重新组合在一起。

但是,我不认为你会有你的标题。您可能需要在流程结束时将其放回您的要求有点复杂,拆分器肯定会有所帮助,但这并不简单。

我发现了这个:http ://www.davsclaus.com/2011/11/splitting-big-xml-files-with-apache.html

于 2013-08-03T17:09:56.900 回答