【问题标题】:How to parse a Html and get the result as a String using Java如何使用 Java 解析 Html 并以字符串形式获取结果
【发布时间】:2015-05-28 22:53:42
【问题描述】:

我想解析一个 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

请帮帮我。

【问题讨论】:

  • 有趣的问题。

标签: java html html-parsing jsoup jericho-html-parser


【解决方案1】:

我会使用一些正则表达式:

(<!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

【讨论】:

  • 我刚刚编辑了我的问题。现在,如果您在这里尝试第一个语句(w3schools.com/html/tryit.asp?filename=tryhtml_basic_document),那么您将得到类似于第二个语句的内容。我需要这样的东西。实际上,我使用的是 HTML 编辑器,如果我在其中输入内容,它会在执行 getText 时返回该输入的 HTML 表示。我想解析它并获取原始内容。
  • 在应用正则表达式之前替换 char : tst = tst.replaceAll("<", "");我已经编辑了响应和运行的示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-25
  • 1970-01-01
  • 1970-01-01
  • 2016-12-25
  • 1970-01-01
  • 2017-05-27
  • 1970-01-01
相关资源
最近更新 更多