本文共 1584 字,大约阅读时间需要 5 分钟。
================================ getText:/body================================ getText: ================================getText:/html================================getText:================================除了前面3.2中输出的几个Tag,其余的Tag都在这里了。 3.4 XorFilter 把前面的AndFilter换成NotFilter测试代码: NodeFilter filterID = new HasAttributeFilter( "id" );NodeFilter filterChild = new HasChildFilter(filterA);NodeFilter filter = new XorFilter(filterID, filterChild); 输出结果: getText:div id="top_main"================================ 4.1 NodeClassFilter 这个Filter用于判断节点类型是否是某个特定的Node类型。在 2.1 TagNameFilter TabNameFilter是最容易理解的一个Filter,根据Tag的名字进行过滤。 下面是用于测试的HTML文件:
白泽居-< /head>
HTMLParser遍历了网页的内容以后,以树(森林)结构保存了结果。HTMLParser访问结果内容的方法有两种。 使用Filter和使用Visitor。 下面介绍使用Visitor访问内容的方法。 4.1 NodeVisitor 从简单方面的理解,Filter是根据某种条件过滤取出需要的Node再进行处理。Visitor则是遍历 HTMLParser使用详解(4)- 通过Visitor访问 内容树的每一个节点,对于符合条件的节点进行处理。实际的结果异曲同工,两种不同的方法可以达到相同的结果。下面是一个最常见的NodeVisitro的例子。 测试代码: ??? public static void main(String[] args) {??????? try{??????????? Parser parser = new Parser( (HttpURLConnection) (new URL(":8080/HTMLParserTester.html")).openConnection() ); ? NodeVisitor visitor = new NodeVisitor( false, false ) {??????????????? public void visitTag(Tag tag) {?????????????????? message("This is Tag:"+tag.getText());??????????????? }??????????????? public void visitStringNode (Text string)??? {???????????????????? message("This is Text:"+string);??????????????? } ? public void visitRemarkNode (Remark remark) {???????????????????? message("This is Remark:"+remark.getText());???????????????
转载地址:https://blog.csdn.net/weixin_39987847/article/details/117721090 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!