Java jsoup-清理缺少和损坏标记的HTML
我正在寻找一种方法来清理HTML文本中可能有一些丢失或损坏的标记。这些代码通常是由非程序员编写的,HTML可能存在许多问题。以下是我尝试过的:Java jsoup-清理缺少和损坏标记的HTML,java,html,jsoup,Java,Html,Jsoup,我正在寻找一种方法来清理HTML文本中可能有一些丢失或损坏的标记。这些代码通常是由非程序员编写的,HTML可能存在许多问题。以下是我尝试过的: Parser p = Parser.htmlParser(); String test = "Here is a <i>fake</> message.<br><b><i>- Publisher</b></i>"; Document d = p.parseInput(te
Parser p = Parser.htmlParser();
String test = "Here is a <i>fake</> message.<br><b><i>- Publisher</b></i>";
Document d = p.parseInput(test, StringUtils.EMPTY);
System.out.println("BEFORE: " + test);
System.out.println("JSPARSED: " + StringUtils.remove(d.body().html(), "\n"));
System.out.println("JSOUP: "+ Jsoup.clean(test, StringUtils.EMPTY, Whitelist.relaxed()));
Parser p=Parser.htmlParser();
String test=“这是一条假消息。
-Publisher”;
文档d=p.parseInput(test,StringUtils.EMPTY);
System.out.println(“之前:+测试);
System.out.println(“JSPARSED:+StringUtils.remove(d.body().html(),“\n”);
System.out.println(“JSOUP:+JSOUP.clean(test,StringUtils.EMPTY,Whitelist.relaxed());
输出为:
BEFORE: Here is a <i>fake</> message.<br><b><i>- Publisher</b></i>
JSPARSED: Here is a <i>fake message.<br><b><i>- Publisher</i></b></i>
JSOUP: Here is a
<i>fake message.<br><b><i>- Publisher</i></b></i>
BEFORE:这是一条假消息。
-Publisher
JSPARSED:这是一条假消息。
-Publisher
JSOUP:这里有一个
假消息。
-Publisher
所需输出为:
Here is a <i>fake</i> message.<br><b><i>- Publisher</i></b>
这是一条假消息。
-Publisher
是否可以使用jsoup清除上述情况下的HTML
编辑:为了添加更多的上下文,这个HTML块显示在我们的网站上,作为产品的描述。这通常是由营销团队或出版商编写的,有时HTML中会出现一些错误。我们目前使用JTidy进行HTML清理,然后再将其显示在网站上
我最近运行了一个程序,查看有多少产品在描述中有错误,发现大约30000个产品有错误。在回顾了其中一些错误后,我发现大多数错误是错误顺序的标记(程序修复了这些错误),但如示例所示,标记丢失或损坏的错误没有按预期修复。自动更正30k格式错误的HTML片段,不太可能得到一致的结果。很可能,你会得到更糟糕的内容 帮自己一个忙:
- 禁止以编程方式为新的/编辑的描述保存损坏的HTML
- 请人手动纠正这些错误(或委托给将错误放在首位的营销团队)