如何让HtmlCleaner处理空内容标签时不生成自闭合的标签?

发布于 2021-11-16 15:48:31 字数 1155 浏览 758 评论 1

1. 现在有一HTML片段:
<div class='myclass'>
    I Love <u>OSChina.net</u>
    nothing.
    <u></u>
</div>
2. 使用 HtmlCleaner + XPath 获取到myclass标签内的内容: 
HtmlCleaner cleaner = new HtmlCleaner();
TagNode tagNode = 
    cleaner.clean("<div class='myclass'>I Love <u>OSChina.net</u>nothing.<u></u></div>");
Object[] nodeVals = tagNode.evaluateXPath("//div[@class='myclass']");
for (Object tag : nodeVals){
    TagNode _tag = (TagNode)tag;
    String rs = ParserUtil.xml(_tag,false);
    System.out.println(rs);
}

3. 运行上述代码后得到的结果是:
<div class="myclass">
    I Love <u>OSChina.net</u>
    nothing.
    <u />
</div>

发现 <u></u> 变成了 <u /> 了,而 u 这个标签是不可以自闭合的,如果这段代码放到浏览器去解析,会发现 <u /> 后面跟着的 html 内容 css 样式将受到影响,全部文字多了下划线,这让人好生讨厌 !

我想要的结果是 <u></u> => <u></u> 或者 空

现在要解决上述问题该怎么办呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

樱花落人离去 2021-11-18 10:25:40

将这个属性useEmptyElementTags设置为false

参考 htmlcleaner.sourceforge.net/parameters.php

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文