java - 如何在骆驼中获取xml节点数
问题描述
我想使用骆驼交换或骆驼路线中的特定标签获取文件中存在的 xml 节点的计数。
我的xml标签是这样的:
<parent>
<child>
<data>A</data>
</child>
<child>
<data>B</data>
</child>
<child>
<data>C</data>
<child>
<data>C1</data>
</child>
<child>
<data>C2</data>
</child>
</child>
</parent>
我想计算<child>
标签,它应该为此返回 5。
目前,我正在使用 Exchange 获取大小,但它的输出为 3。
exchange.getIn().getBody(XmlTreesType.class).getParentTree().getChildNode().size();
解决方案
这在很大程度上取决于您的实际用例。
要提取计数,您可以使用XPath 语言,它允许您轻松地从 XML 中提取信息。
<child>
要提取您的所有节点的计数,<parent>
您可以使用以下命令:
count(/parent//child)
XPath 表达式。
要提取此值并将其存储在标头变量中,如下所示:
.from()
.setHeader("childCountHeader", xpath("count(/parent//child)", Integer.class));
Camel Java DSL 中的另一个典型用例如下所示,以便直接根据计数进行路由:
from()
.choice().xpath("count(/parent//child)>5")
//do something
.otherwise()
//do something else
.end();
如果你想在 vanilla java 中使用 XPath,就像在骆驼处理器中一样。您可以按照此答案中的说明构建 XPath 处理器。
推荐阅读
- python - 如何将购买 DataFrame 转换为 Spark DistributedMatrix 类型以计算项目之间的相似性?
- maven - Maven 原型:生成强制 groupId 作为包结构
- c++ - g ++ c ++ 17类模板参数推导在非常特定的情况下不起作用
- python - 如何将图像分析结果添加到 python 中的数据框中(对于混淆矩阵)?
- r - R Shiny 可以用于导入文件、运行 R 脚本和导出文件吗?
- spring-boot - s3 入站通道适配器中的本地目录表达式
- android - Android X86 上的 IMEI “未知”
- css - 基于宽度元素的背景动画
- ejabberd - 从房间配置 MUC 中删除一些选项
- node.js - 护照验证功能不起作用