【问题标题】:Parse a XML file containing HTML strings using DOMParser使用 DOMParser 解析包含 HTML 字符串的 XML 文件
【发布时间】: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.

任何帮助将不胜感激。

【问题讨论】:

    标签: java html xml domparser


    【解决方案1】:

    您的 userMessage 变量是一个 DOM 节点。

    如果要将 DOM 节点转换为 HTML 字符串,请看这里:

    How do I convert a org.w3c.dom.Document object to a String?

    【讨论】:

      【解决方案2】:

      尽量把文字放在

      之间
      <xmp> </xmp> 
      

      标签,中间的所有内容都将按原样显示

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-09
        • 1970-01-01
        • 2012-03-19
        • 1970-01-01
        • 2011-02-09
        • 2011-10-29
        • 1970-01-01
        • 2020-04-28
        相关资源
        最近更新 更多