使用java DOM迭代节点文本内容

时间:2015-04-07 19:49:55

标签: java xml dom

假设我有一个看起来像这样的XML文件(为了清晰起见添加了空格):

<stuff>
    text1
    <tag1 attribute1="value1">
        text2
    </tag1>
    text3
    <tag2 attribute2="value2">
        text4
        <tag3 attribute3="value3">
            text5
        </tag3>
        text6
    </tag2>
    text7
</stuff>

使用java DOM解析器,我可以通过调用与getTextContent()标记对相对应的Element上的stuff方法来获取文本。这将产生字符串:

 text1 + text2 + text3 + text4 + text5 + text6 + text7

但我真正喜欢的是迭代文本部分并根据它周围的标签对执行适当的操作,依此类推,所以我最终得到的就是

text1 + f(tag1, attribute1, value1, text2) + text3 + f(tag2, attribute2, value2, text4 +
f(tag3, attribute3, value3, text5) + text6) + text7

我该怎么做?

1 个答案:

答案 0 :(得分:0)

我明白了:虽然只有标记对及其内容计为Element,但每个文本部分都是Node(它是Element的超接口),并且节点方法getChildNodes()返回NodeList,其中包含正确顺序的所有节点。 node instanceof Element可用于查看哪些节点是标记对,getTagName()getAttribute(String name)getAttributes()可用于检索标记信息。非Element节点也有getTextContent()方法。