html 解析器 java,java JDK自带的HTML解析器 (HTMLEditorKit.Parser) 示例

HtmlParseDemo.java

import java.io.*;

import java.net.*;

import javax.swing.text.*;

import javax.swing.text.html.*;

import javax.swing.text.html.parser.*;

/**

* This small demo program shows how to use the

* HTMLEditorKit.Parser and its implementing class

* ParserDelegator in the Swing system.

*/

public class HtmlParseDemo {

public static void main(String [] args) {

Reader r;

if (args.length == 0) {

System.err.println("Usage: java HTMLParseDemo [url | file]");

System.exit(0);

}

String spec = args[0];

try {

if (spec.indexOf("://") > 0) {

URL u = new URL(spec);

Object content = u.getContent();

if (content instanceof InputStream) {

r = new InputStreamReader((InputStream)content);

}

else if (content instanceof Reader) {

r = (Reader)content;

}

else {

throw new Exception("Bad URL content type.");

}

}

else {

r = new FileReader(spec);

}

HTMLEditorKit.Parser parser;

System.out.println("About to parse " + spec);

parser = new ParserDelegator();

parser.parse(r, new HTMLParseLister(), true);

r.close();

}

catch (Exception e) {

System.err.println("Error: " + e);

e.printStackTrace(System.err);

}

}

}

HTMLParseLister.java

/**

* HTML parsing proceeds by calling a callback for

* each and every piece of the HTML do*****ent. This

* simple callback class simply prints an indented

* structural listing of the HTML data.

*/

class HTMLParseLister extends HTMLEditorKit.ParserCallback

{

int indentSize = 0;

protected void indent() {

indentSize += 3;

}

protected void unIndent() {

indentSize -= 3; if (indentSize < 0) indentSize = 0;

}

protected void pIndent() {

for(int i = 0; i < indentSize; i++) System.out.print(" ");

}

public void handleText(char[] data, int pos) {

pIndent();

System.out.println("Text(" + data.length + " chars)");

}

public void handleComment(char[] data, int pos) {

pIndent();

System.out.println("Comment(" + data.length + " chars)");

}

public void handleStartTag(HTML.Tag t, MutableAttributeSet a, int pos) {

pIndent();

System.out.println("Tag start(, " +

a.getAttributeCount() + " attrs)");

indent();

}

public void handleEndTag(HTML.Tag t, int pos) {

unIndent();

pIndent();

System.out.println("Tag end(" + t.toString() + ">)");

}

public void handleSimpleTag(HTML.Tag t, MutableAttributeSet a, int pos) {

pIndent();

System.out.println("Tag(, " +

a.getAttributeCount() + " attrs)");

}

public void handleError(String errorMsg, int pos){

System.out.println("Parsing error: " + errorMsg + " at " + pos);

}

}

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com

特别注意:本站所有转载文章言论不代表本站观点!

本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值