有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何使用Java解析Html并将结果作为字符串

我想解析一个Html并将结果作为字符串。 鉴于外部Html的主体包含另一个Html字符串,我希望将该内部Html作为输出字符串

示例>;输入HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><head></head><body><p>&lt;!DOCTYPE html&gt;<br />&lt;html&gt;<br />&lt;body&gt;<br /><br />&lt;h1&gt;My First Heading&lt;/h1&gt;<br /><br />&lt;p&gt;My first paragraph.&lt;/p&gt;<br /><br />&lt;/body&gt;<br />&lt;/html&gt;<br /><br /></p></body></html>

输出字符串:

<!DOCTYPE html><html><body><h1>My First Heading</h1><p>My first paragraph.</p></body></html>

重要提示:我使用的是一个HTML编辑器,如果我在其中输入了一些东西,它会在执行getText时返回该输入的HTML表示,上面的第一个HTML字符串只是该表示

此外,输出字符串应该与我在此处运行第一个字符串时相同(http://www.w3schools.com/html/tryit.asp?filename=tryhtml_basic

请帮我做这个


共 (1) 个答案

  1. # 1 楼答案

    我会选择一些regexp:

    (<!DOCTYPE html>).*(<html>.*</html>).+
    

    第1组和第2组

        tst = tst.replaceAll("<", "<").replaceAll(">",">");
        Pattern p = Pattern.compile("(<!DOCTYPE html>).*(<html>.*</html>).*</html>.*");
        Matcher m = p.matcher(tst);
        m.find();
        System.out.println(m.group(1) + m.group(2));
    

    运行示例: http://rextester.com/JTOJ89529