我需要使用javax.xml.parsers.DocumentBuilder从HTML字符串创建org.w3c.dom.Document对象的地方。这里有在该HTML字符串中包含无效属性及其值的可能性。那么,有什么方法或Java util可以清除HTML中的无效属性吗?尝试进行JSOUP清理,因为它基于列入白名单的标签和属性进行清理。但是我只需要清除无效的属性(按照HTML5标准)。
public static void main(String[] args) throws NotebookException {
String text = "<div dir=\"ltr\"><link href=\"http://fonts.googleapis.com/css?family=Open+Sans:light:bold\" rel=\"stylesheet\" \\=\"\">";
try(ByteArrayInputStream bais=new ByteArrayInputStream(text.getBytes()))
{
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = builderFactory.newDocumentBuilder();
Document document = builder.parse(new InputSource(bais));
}
catch (Exception e)
{
e.printStackTrace();
}
}
在上面的代码中,带有LINK标记的html字符串具有无效的属性'\'及其值'“”'(空双引号)。需要清除解析为Document对象的html。
您可以使用
String.replaceAll("[unwanted chars]","");
参考replaceAll tutorial page以获取更多详细信息,尤其是转义字符。
这些东西仅在预定义的符号上起作用,为了使您的系统智能并在遇到每个新的无效符号时不断进行更新,您需要编写一种方法,以便在处理相关符号时将此类新符号存储在适当的数据结构中例外。