如何在java计算节点中遍历xml树

qncylg1j  于 2021-08-25  发布在  Java
关注(0)|答案(1)|浏览(353)

我在使用iib v10时遇到了一种情况,其中一个soap web服务发送的xml响应在同一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计算节点中是否有任何方法允许遍历树中的每个元素并将其值作为字符串获取?

2skhul33

2skhul331#

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

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 (MbXMLNSC.FIELD.equals(specificType)) {
            String value = child.getValueAsString();
            // Do your thing
        }
        doYourThing(child);
        child = child.getNextSibling();
    }
}

相关问题