当我在 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();
}
}
}
}
我正在 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();
}
}
}
}