有没有办法从HTML清除无效属性?

问题描述 投票:0回答:1

我需要使用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。

java html xml dom
1个回答
0
投票

您可以使用

String.replaceAll("[unwanted chars]","");

参考replaceAll tutorial page以获取更多详细信息,尤其是转义字符。

这些东西仅在预定义的符号上起作用,为了使您的系统智能并在遇到每个新的无效符号时不断进行更新,您需要编写一种方法,以便在处理相关符号时将此类新符号存储在适当的数据结构中例外。

© www.soinside.com 2019 - 2024. All rights reserved.