java - 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]");
解决方案
文档是您的朋友……即使该文档中没有描述。
注意第一个参数是命名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);
}
推荐阅读
- php - 有什么方法可以发布推文或发布带有显示文本而不是 url 的链接?
- java - 测试失败时无法从 testnglistner ontestfailure 方法中截取屏幕截图
- tensorflow - 哪个 COCO 数据集用于训练来自 Tensorflow 存储库的 ssd_mobilenet_v1_coco_2018_01_28.tar.gz 模型?
- reactjs - 如何将悬停效果应用于 react-table 行中存在的单个组件。虽然有多个列
- javascript - 如何防止在现有形状图层上绘制多边形
- javascript - 如何在内容动态时对齐表格元素
- reactjs - 如何在更改文本时保持按钮大小?
- javascript - ListView.setClickable() 不起作用。(Nativescript-Vue)
- c - 使用指定的初始化器范围在 C 中初始化结构数组的所有结构成员
- artifactory - Artifactory Filestore 具有 root 和 artifactory 用户条目