ibm-integration-bus - 如何在 JCN 中访问 XML 结构
问题描述
我需要在 java 计算节点的 XML 结构中读取它,到目前为止,我可以通过逐个子获取单个元素来做到这一点。
但是如何在 XML 结构中一次获取所有元素呢?
int i = 0;
String[] Array = new String[api.getResponse().size()];
while(api.hasNext()) {
Map<String, String> recInMap= api.getNext();
xmlnscRoot.getLastChild().createElementAsLastChild(MbElement.TYPE_NAME_VALUE,"Details",null); //Root tag
xmlnscRoot.getLastChild().getLastChild().createElementAsLastChild(MbElement.TYPE_NAME_VALUE,"ABCD",recInMap.get("ABCD"));
xmlnscRoot.getLastChild().getLastChild().createElementAsLastChild(MbElement.TYPE_NAME_VALUE,"EFGH",recInMap.get("EFGH"));
xmlnscRoot.getLastChild().getLastChild().createElementAsLastChild(MbElement.TYPE_NAME_VALUE,"IJKL",recInMap.get("IJKL"));
.
.
.
.
Array[i]=(recInChar);//add(CurRecord);
i=i+1;
}
解决方案
有很多方法可以做你想做的事。
您必须使用 XPath 或 JAXB(如果您有模式)来简化所有这些类型的解析
下面是一个简单的例子:
MbElement localEnvRootElement= outAssembly.getLocalEnvironment().getRootElement();
MbXPath mbXPath = new MbXPath("Variables/message");
Object resultObj = variablesElem.evaluateXPath(mbXPath);
if (resultObj != null && resultObj instanceof List) {
listElt = (List<MbElement>) resultObj;
}
然后您需要做的就是在 MbElement 列表上循环(例如:每个都有一个)注意:此代码将获取 $LocalEnv/Variables/Message 路径下的所有元素
推荐阅读
- discord.js - 丰富的 Minecraft 玩家数量
- c - 使用 OCI 连接池时连接速度很慢
- javascript - 通过 JavaScript 渲染 MathJax 效果不佳
- javascript - 如何在js中为具有两个不同间隔的组件设置动画
- sql - sql问题的问题可能与拥有和计数有关
- python - MongoDB对同一服务器的多次访问
- arrays - VBA宏完成时数组变量值是否可以保留
- xml - 如何将嵌套的 XML 元素解组为字符串数组?
- html - 使图像仅为父容器高度的 100%
- java - 如何在 java 1.8 中从 org.jboss.jca.adapters.jdbc.jdk8.WrappedConnectionJDK8 转换为 oracle.jdbc.OracleConnection