【发布时间】:2014-09-12 11:22:06
【问题描述】:
我正在尝试使用 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.
任何帮助将不胜感激。
【问题讨论】: