如果JDOM2 Element文本的内容由其内部元素分隔,如何将其作为列表?

时间:2013-04-30 13:58:27

标签: java xml-parsing jdom-2

我想使用JDOM2从Java中的XML文件构建一个String。 我想要处理的XML文件片段如下所示:

...
<title>
  usefuldatapart1
  <span profile="id1"> optionaldata1 </span>
  <span profile="id2"> optionaldata2 </span>
  <span profile="id3"> optionaldata3 </span>
  usefuldatapart2
</title>
...

元素'title'包含有用的文本内容,我将内部元素分成几个部分,如果任何一个配置文件变为活动状态,我必须在正确的部分中插入内部元素的内容(只有一个可以是活动的一次但在这种情况下并不重要。)

是否有任何优雅的方法可以将Element文本作为字符串数组返回以进行进一步的操作?

或者,如果我以错误的方式得到这个,我怎么能正确地做到这一点?

(目前正在使用Element的'getText'和'getContent'方法,以及'XMLOutputter'的基础知识)

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

可能有多种方法可以做到这一点。其中一个是使用XPath,但也许使用后代迭代器和StringBuilder更简单,并检查每个文本节点的祖先....

例如(我手动输入,不验证这个......):

public String getTitleText(final Element title) {
    final StringBuilder sb = new StringBuilder();
    for (final Text txt : title.getDescendants(Filters.text())) {
        final Element parent = txt.getParentElement();
        if (parent == title || 
                parent.getAttributeValue("active", "not").equals("true")) {
            sb.append(txt.getValue());
        }
    }
    return sb.toString();
}