首页 > 解决方案 > 如何在 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;
}

标签: ibm-integration-busextended-sql

解决方案


有很多方法可以做你想做的事。

您必须使用 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 路径下的所有元素


推荐阅读