当我在 Java 中获取带有 DOM 的文本内容时保留子标签

Keep child tags when I get text content with DOM in Java

我正在 Java 中编写一个 XML 生成器,我有一个类似的结构(我为了示例简化了它):

<autocue>
     <sentence>
          <illustration>smile.jpg</illustration>
          <text>I am a <color red="255" green="0" blue="0">sentence</color> <italic>text</italic>.</text>
     </sentence>
</autocue>

我解析了这种 XML 文件并且我工作得很好,但是当我在我的文本节点上使用 getTextContent() 时,它给我一个这样的字符串:

I am a sentence text.

这似乎合乎逻辑。但是,我需要它 return 我这样的字符串:

I am a <color red="255" green="0" blue="0">sentence</color> <italic>text</italic>.

有没有一种简单的方法可以得到这个结果? 提前致谢。

您可以使用以下内容代替 getTextContent()

对于确切的节点:

getElementsByTagName("text").item(0).getNodeValue()

但如果 autocue 有多个节点,则可以使用以下内容:

NodeList autocueNodes = myDoc.getElementsByTagName("autocue");//here myDoc is the reference for getting document for the parser
    for (int i = 0; i < autocueNodes.getLength(); i++) {
        NodeList autocueChildNodes = autocueNodes.item(i).getChildNodes();
        if (autocueChildNodes.item(i).getLocalName() != null
                && autocueChildNodes.item(i).getLocalName().equals("sentence")) {
            NodeList sentenceList = autocueChildNodes.item(i).getChildNodes();
            for (int j = 0; j < sentenceList.getLength(); j++) {
                if (sentenceList.item(j).getLocalName() != null
                        && sentenceList.item(j).getLocalName()
                                .equals("text")) {
                    String text = sentenceList.item(j).getNodeValue();
                }
            }
        }

    }