我有一个关于XMLTokenizeLanguage
的问题,更具体地说是关于XMLTokenExpressionIterator.java
的问题:
this.splitpath
接受以“/"分隔的多个标记。
我试着这样使用它:==〉
.split(body().xtokenize("/ns1:[some type]/ns1:[another type]" 'i', ns))
.streaming()
其中ns和ns 1是命名空间
但还没有结果
你能和我分享更多关于XMLTokenizeLanguage
的内容吗?
Camel网站中的例子是关于按1个类型[JAXB java POJO]拆分XML,那么2个或更多类型[JAXB java POJO]呢?这可能吗?
https://camel.apache.org/components/3.18.x/eips/split-eip.html
这是我的XML内容:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<LocationMessages xmlns="http://standards.iso.org/iso/15143/-3">
<Links>
<rel>self</rel>
<href>https://[source domain name ]/public/api/aemp/v2/15143/-3/Fleet/Equipment/ID/[equipement id]/Locations/2021-01-01T00:00/2022-09-28T09:34:06.439553/1</href>
</Links>
<Links>
<rel>last</rel>
<href>https://[source domain
name]/public/api/aemp/v2/15143/-3/Fleet/Equipment/ID/[equipement
id]/Locations/2021-01-01T00:00/2022-09-
28T09:34:06.439553/1</href>
</Links>
<Location datetime="2022-04-05T09:52:53Z">
<Latitude>43.290143</Latitude>
<Longitude>5.491987</Longitude>
<Altitude>102.375</Altitude>
<AltitudeUnits>metre</AltitudeUnits>
</Location>
<Location datetime="2022-05-04T13:50:57Z">
<Latitude>43.289926</Latitude>
<Longitude>5.492582</Longitude>
<Altitude>77.0</Altitude>
<AltitudeUnits>metre</AltitudeUnits>
</Location>
</LocationMessages>
这是命名空间声明:
Namespaces ns = new Namespaces("ns1", "http://standards.iso.org/iso/15143/-3");
下面是xtokenize语言的拆分定义:
.split(body().xtokenize("/ns1:Links/ns1:Location", 'i', ns)).streaming()
当我一次使用1个类型(链接或位置)时,拆分xtokenize对我有效,但我不想使用(.multicast())来复制管道。
我想通过2种类型(链接和位置)进行令牌化,然后应用内容路由EIP(选择())为每种令牌类型选择路由。
链接和位置是xjc从xsd模式生成的JAXB pojo类型。下面是它们结构的一部分:
第一个
1条答案
按热度按时间2izufjch1#
根据its schema definition,您需要使用通配符
*
更改xtokenize
表达式,以包括其所有可能的子代,即Links
和Location
。split
的正确代码应该是.split(body().xtokenize("/ns1:LocationMessages/ns1:*", 'i', ns)).streaming()