首页 > 解决方案 > Html 解析器通过保留原始 html 标记和换行符来替换 html 文档中的超链接

问题描述

我正在使用 Jsoup html 解析器来替换 html 文档中的超链接。即使在更新 html 文档之后,我也希望实际案例、元素和换行符保持原样。但是,Jsoup 将大小写更新为小写,更新了一些元素并删除了换行符。我也尝试过 ParseSettings 。但是使用解析设置,doc.select("a[href]")不会返回元素。下面是我正在使用的代码。

有人可以帮助我使用正确的 html 解析器,使用 java 通过保留 html 文档来替换超链接吗?

File input = new File(fileEntry.getPath());
Parser parser = Parser.htmlParser();
parser.settings(new ParseSettings(true, true)); 
Document doc = parser.parseInput(input.toString(), "UTF-8");
Elements anchorLinks = doc.select("a[href]");

标签: javahtml-parsing

解决方案


文档是您的朋友……即使该文档中没有描述。

注意第一个参数是命名html的,第二个参数是命名的baseUri

第一个参数必须是实际的 HTML 内容,而不是文件名。您的代码正在尝试像解析 HTML 一样解析文件名。

第二个参数必须是 URI 或空字符串。“UTF-8”根本不是一个有效的 URI,但由于您没有尝试解析链接,它可能不是一个严重的错误。

您可能需要Jsoup.parse 方法,该方法同时接受 InputStream 和自定义 Parser

Document doc;
try (InputStream content = new BufferedInputStream(
    new FileInputStream(input))) {

    doc = Jsoup.parse(content, null, "", parser);
}

推荐阅读