如何遍历 java 计算节点中的 XML 树

How to traverse an XML tree in java compute node

我在使用 IIB v10 时遇到这样一种情况,其中 SOAP Web 服务正在发送 XML 响应,其中包含 [=24= 中的英语和 REVERSED 阿拉伯语]相同 XML 元素。

示例:

<note>
  <to>Tove   رمع</to>
  <from>Jani  ريمس</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

应该是这样的

<note>
  <to>Tove   عمر</to>
  <from>Jani  سمير</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

所以我已经准备了一些 Java 代码,它接受一个字符串,将其拆分为字符串数组中的单词,并检查一个单词是否是阿拉伯语单词,然后它会反转它,然后重新连接字符串。

问题是后端响应有点大,我需要遍历 XML 树中的每个元素 所以 Java 计算中有什么方法允许遍历树中每个元素并将其值作为字符串的节点 ?

递归是你的朋友。使用根元素调用以下函数:

import com.ibm.broker.plugin.MbElement;
import com.ibm.broker.plugin.MbException;
import com.ibm.broker.plugin.MbXMLNSC;

public void doYourThing(MbElement node) throws MbException {
    MbElement child = node.getFirstChild();
    while (child != null) {
        int specificType = child.getSpecificType();
        if (specificType == MbXMLNSC.FIELD) {
            String value = child.getValueAsString();
            // Do your thing
        }
        doYourThing(child);
        child = child.getNextSibling();
    }
}