我正在尝试使用DOMParser解析带有HTML字符串的XML文件。问题是getTextContent()方法只获取文本,但不获取其中的任何HTML标记。我希望字符串可以原样返回,而不是解析后的版本。我搜索了整个网络,但找不到任何可以帮助我的东西。顺便说一句。我不能对HTML字符串进行任何更改,因为大约有500个文件存在超过100k的字符串。
Test.xml文件
<?xml version="1.0" encoding="iso-8859-1"?>
<UserDetails xml:lang="en">
<UserMessage ID="TestID">Text goes here. <span style="color:#DF0000"><b>Bold Text goes here.</b> </span>More Text.</UserMessage>
</UserDetails>
Java模块
import com.sun.org.apache.xerces.internal.parsers.DOMParser;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
public class TestAll
{
public static void main(String[] args)
{
try
{
File file = new File("C:/Users/Administrator/Desktop/Test.xml");
DOMParser fileParser = new DOMParser();
InputStream in = new FileInputStream(file);
InputSource source = new InputSource(in);
fileParser.parse(source);
in.close();
Document newFileDoc = fileParser.getDocument();
NodeList nodes = newFileDoc.getChildNodes();
for (int i = 0; i < nodes.getLength(); i++)
{
Node node = nodes.item(i);
NodeList userMessages = node.getChildNodes();
for (int j = 0; j < userMessages.getLength(); j++)
{
Node userMessage = userMessages.item(j);
if (userMessage.getNodeType() == Node.ELEMENT_NODE)
{
String text = userMessage.getTextContent();
System.out.println(text);
}
}
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
实际输出
文字在这里。 粗体文字在这里。更多文字。
预期产出
Text goes here. <span style="color:#DF0000"><b>Bold Text goes here.</b> </span>More Text.
任何帮助都将不胜感激。
答案 0 :(得分:0)
尝试将文字放在
之间<xmp> </xmp>
标签,其间的所有内容都将按原样显示
答案 1 :(得分:0)
您的userMessage变量是DOM节点。
如果要将DOM节点转换为HTML字符串,请查看此处: