当前位置: 首页 > 知识库问答 >
问题:

使用DOMParser解析包含HTML字符串的XML文件

王弘和
2023-03-14

我正在尝试使用DOMParser解析带有HTML字符串的XML文件。问题是getTextContent()方法只获取文本,而不获取其中的任何HTML标记。我希望字符串按原样返回,而不是按解析后的版本返回。我搜索了整个网络,却找不到任何对我有帮助的东西。顺便说一句,我无法对HTML字符串进行任何更改,因为在大约500个文件中有超过100k个Sting。

测验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.

任何帮助都将不胜感激。

共有2个答案

田普松
2023-03-14

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

如果要将DOM节点转换为HTML字符串,请查看以下内容:

如何转换组织。w3c。多姆。文档对象到字符串

方轩昂
2023-03-14

试着把课文放在中间

<xmp> </xmp> 

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

 类似资料:
  • 问题内容: 我正在尝试在NetBeans 6.0.1中使用OpenCSV解析.csv文件。我的文件包含一些Unicode字符。当我在输出中写入字符时,字符以其他形式显示,例如(HJ1’-E /;)。当我在记事本中打开此文件时,它看起来还可以。 我使用的代码: 问题答案: 首先,您需要知道文件的编码格式,例如UTF-8或UTF-16。生成此文件的原因是什么? 在那之后,它相对简单- 您需要创建一个包

  • 问题内容: 我在使用jQuery 解析HTML字符串时问我如何在html字符串上使用jQuery。一切正常,但是当我将其应用于ajax时-它不起作用。这是代码。 moo.html包含 如何获得斑马纹和杠铃? 问题答案: 我认为其中的换行符可能会让您失望。 html中的所有换行符最终都将由jQuery解析并保留为文本节点元素。结果,当这些节点中的第一个被命中并调用时,它将停止迭代(不适用于非Elem

  • 问题内容: 我搜索了一个解决方案,但没有任何意义,所以这是我的问题: 我想解析一个包含HTML文本的字符串。我想用JavaScript做。 我尝试了这个库,但似乎它解析了当前页面的HTML,而不是字符串。因为当我尝试下面的代码时,它更改了页面的标题: 我的目标是从读取的HTML外部页面中提取链接,就像读取字符串一样。 您知道执行此操作的API吗? 问题答案: 创建一个虚拟DOM元素并将字符串添加到

  • 我寻找一个解决方案,但没有任何相关的,所以这是我的问题: 我想解析一个包含HTML文本的字符串。我想用JavaScript来做。 我尝试了这个库,但它似乎解析我当前页面的HTML,而不是从一个字符串。因为当我尝试下面的代码时,它会更改我页面的标题: 我的目标是从一个HTML外部页面中提取链接,我就像读一个字符串一样。 你知道做这件事的API吗?

  • 我在https://github.com/owlcs/owlapi/tree/master/contract/src/test/java.org/coode/owlapi/example上运行owlapi示例,以检索具有奇数字符的类的子类。我的owl文件包含带有奇数字符的类,如/,(但解析器似乎在奇数字符之前截断它们,并最终抛出一个错误。我查看了ManchesterOWLSyntaxTokeniz

  • 问题内容: 您如何解析存储在Java字符串对象中的xml? Java的XMLReader仅从URI或输入流中解析XML文档。无法从包含xml数据的字符串进行解析? 现在,我有以下内容: 在我的处理程序上,我有这个: 提前致谢 问题答案: 该SAXParser的可以读取的的InputSource。 一个 InputSource的 可以采取 读者 在其构造 因此,您可以通过StringReader来解