如何使用java库“HTML Parser”删除所有<style>标签?</style>

时间:2011-12-21 15:43:34

标签: java html parsing tags

我需要对html文件执行多个操作,例如删除特定标记或删除属性。我决定使用HTML Parser,一个java库: http://htmlparser.sourceforge.net/

首先,我想删除所有样式标记。我设法通过这样做得到一个包含所有样式标签的NodeList:

Parser parser = new Parser (url);
NodeList list = parser.parse (null);            
NodeList styles = list.extractAllNodesThatMatch (new TagNameFilter ("STYLE"), true);

现在我不知道如何从整个节点列表中删除此样式属性。我是否需要获取整个列表?

之后,我希望能够删除标签内的所有属性,或者仅删除alt属性。有没有一种自动完成的方法?

1 个答案:

答案 0 :(得分:4)

从文档中,Parser返回包含所有html节点的树列表(将解析器视为Node大树的根节点和每个“级别”那棵树是NodeList)。

您可以递归地遍历树,针对StyleTag测试每个节点的类型,并在适用时从相应的NodeList中删除它。继续以递归方式下降到树中,直到您访问其所有节点。

NodeTreeWalker是您的朋友,可以帮助您进行递归树遍历。

jsoup是另一个不错的选择,它有一个更简单的界面(参见另一个question)。