TagSoup开发指南

对于TagSoup可能有些人会比较陌生,TagSoup是Java语言开发的,通过SAX引擎解析结构糟糕、令人抓狂的不规范HTML文档的小工具。TagSoup可以将一个HTML文档转换为结构良好的XML文档(近似于XHTML),方便开发人员对获取的HTML文档进行解析等操作。同时TagSoup提供了命令行程序,可以运行TagSoup来对HTML文档进行解析。

但是TagSoup的缺陷就是,官方网站([url]http://home.ccil.org/~cowan/XML/tagsoup/[/url])上不提供API文档的链接,同时也不提供开发指南,只提供了一个40页的幻灯片([url]http://home.ccil.org/~cowan/XML/tagsoup/[/url]),是其在Extreme Markup Languages 2004上的演讲。这对于将TagSoup整合到自己的应用程序中还是遇到了很大的挑战!

使用TagSoup的开发流程:

[list]
[*]创建Parser实例;
[*]提供自己的SAX2内容处理器
[*]提供只想需要解析的HTML的InputSource实例;
[*]开始parse()!
[/list]
由于个人能力有限,这几句话把我直接搞懵了,所以决定仔细研究下。

TagSoup包含2个包、16个类文件(文件数目还是比较少的,但是功能很强大!)。其中核心类包括Parser、PYXScanner、XMLWriter。

[list]
[*]org.ccil.cowan.tagsoup.Parser,该类继承自org.xml.sax.helpers.DefaultHandler,可知该类是一个SAX型的解析器;
[*]org.ccil.cowan.tagsoup.PYXScanner,该类实现了Scanner接口,用于读取解析后的内容;
[*]org.ccil.cowan.tagsoup.XMLWriter,该类继承自org.xml.sax.helpers.XMLFilterImpl,同时实现org.xml.sax.ContentHandler接口(这个是最主要的),也就是说XMLWriter是TagSoup为我们提供的HTML解析成XML文档的默认实现。
[/list]那么找到了这三个核心类,就按照上面的流程开始解析吧,以下是我个人写的一个小例子:
StringReader xmlReader = new StringReader("");
StringReader sr = new StringReader(html);
InputSource src = new InputSource(sr);//构建InputSource实例
Parser parser = new Parser();//实例化Parse
XMLWriter writer = new XMLWriter();//实例化XMLWriter,即SAX内容处理器
parser.setContentHandler(writer);//设置内容处理器
parser.parse(src);//解析
Scanner scan = new PYXScanner();
scan.scan(xmlReader, parser);//通过xmlReader读取解析后的结果
char[] buff = new char[1024];
while(xmlReader.read(buff) != -1) {
System.out.println(new String(buff));//打印解析后的结构良好的HTML文档
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值