Hot Search : Source embeded web remote control p2p game More...
Location : Home Search - html
Search - html - List
动态html
Date : 2025-07-16 Size : 29.56kb User :

DL : 0
动态html
Date : 2025-07-16 Size : 549.98kb User :

HTML文档显示源代码.


Date : 2008-04-13 Size : 59.63kb User : Gromit2008

Java编写HTML文件分析程序

 一、概述

    

    Web服务器的核心是对Html文件中的各标记(Tag)作出正确的分析,一种编程语言的解释程序也是对源文件中的保留字进行分析再做解释的。实际应用中,我们也经常会碰到需要对某一特定类型文件进行要害字分析的情况,比如,需要将某个HTML文件下载并同时下载与之相关的.gif.class等文件,此时就要求对HTML文件中的标记进行分离,找出所需的文件名及目录。在Java出现以前,类似工作需要对文件中的每个字符进行分析,从中找出所需部分,不仅编程量大,且易出错。笔者在近期的项目中利用Java的输入流类StreamTokenizer进行HTML文件的分析,效果较好。在此,我们要实现从已知的Web页面下载HTML文件,对其进行分析后,下载该页面中包含的HTML文件(假如在Frame中)、图像文件和ClassJava Applet)文件。

    

    二、StreamTokenizer

    

    StreamTokenizer即令牌化输入流的作用是将一个输入流中变成令牌流。令牌流中的令牌实体有三类:单词(即多字符令牌)、单字符令牌和空白(包括JavaC/C++中的说明语句)。

    

    StreamTokenizer类的构造器为: StreamTokenizer(InputStream in)

    

    该类有一些公有实例变量:ttypesvalnval ,分别表示令牌类型、当前字符串值和当前数字值。当我们需要取得令牌(即HTML中的标记)之间的字符时,应访问变量sval。而读向下一个令牌的方法是调用nextToken()。方法nextToken()的返回值是int型,共有四种可能的返回:

    

    StreamTokenizer.TT_NUMBER: 表示读到的令牌是数字,数字的值是double型,可以从实例变量nval中读取。

    

    StreamTokenizer.TT_Word: 表示读到的令牌是非数字的单词(其他字符也在其中),单词可以从实例变量sval中读取。

    

    StreamTokenizer.TT_EOL: 表示读到的令牌是行结束符。

    

    假如已读到流的尽头,则nextToken()返回TT_EOF

    

    开始调用nextToken()之前,要设置输入流的语法表,以便使分析器辨识不同的字符。WhitespaceChars(int low, int hi)方法定义没有意义的字符的范围。WordChars(int low, int hi)方法定义构造单词的字符范围。

    

    三、程序实现

    

    1HtmlTokenizer类的实现

    

    对某个令牌流进行分析之前,首先应对该令牌流的语法表进行设置,在本例中,即是让程序分出哪个单词是HTML的标记。下面给出针对我们需要的HTML标记的令牌流类定义,它是StreamTokenizer的子类:

    

    

    import java.io.*;

    import java.lang.String;

    class HtmlTokenizer extends

    StreamTokenizer {

    //定义各标记,这里的标记仅是本例中必须的,

    可根据需要自行扩充

     static int HTML_TEXT=-1;

     static int HTML_UNKNOWN=-2;

     static int HTML_EOF=-3;

     static int HTML_IMAGE=-4;

     static int HTML_FRAME=-5;

     static int HTML_BACKGROUND=-6;

     static int HTML_APPLET=-7;

    

    boolean outsideTag=true; //判定是否在标记之中

    

     //构造器,定义该令牌流的语法表。

     public HtmlTokenizer(BufferedReader r) {

    super(r);

    this.resetSyntax(); //重置语法表

    this.wordChars(0,255); //令牌范围为全部字符

    this.ordinaryChar('< '); //HTML标记两边的分割符

    this.ordinaryChar('>');

     } //end of constrUCtor

    

     public int nextHtml(){

    int token; //令牌

    try{

    switch(token=this.nextToken()){

    case StreamTokenizer.TT_EOF:

    //假如已读到流的尽头,则返回TT_EOF

    return HTML_EOF;

    case '< ': //进入标记字段

    outsideTag=false;

    return nextHtml();

    case '>': //出标记字段

    outsideTag=true;

    return nextHtml();

    case StreamTokenizer.TT_WORD:

    //若当前令牌为单词,判定是哪个标记

    if (allWhite(sval))

     return nextHtml(); //过滤其中空格

    else if(sval.toUpperCase().indexOf("FRAME")

    !=-1 && !outsideTag) //标记FRAME

     return HTML_FRAME;

    else if(sval.toUpperCase().indexOf("IMG")

    !=-1 && !outsideTag) //标记IMG

     return HTML_IMAGE;

    else if(sval.toUpperCase().indexOf("BACKGROUND")

    !=-1 && !outsideTag) //标记BACKGROUND

     return HTML_BACKGROUND;

    else if(sval.toUpperCase().indexOf("APPLET")

    !=-1 && !outsideTag) //标记APPLET

     return HTML_APPLET;

    default:

    System.out.println ("Unknown tag: "+token);

    return HTML_UNKNOWN;

     } //end of case

    }catch(IOException e){

    System.out.println("Error:"+e.getMessage());}

    return HTML_UNKNOWN;

     } //end of nextHtml

    

    protected boolean allWhite(String s){//过滤所有空格

    //实现略

     }// end of allWhite

    

    } //end of class

    

    以上方法在近期项目中测试通过,操作系统为Windows NT4,编程工具使用Inprise Jbuilder3


Date : 2008-07-07 Size : 1.04kb User : tiberxu

HTML参考手册。-HTML reference manual.
Date : 2008-10-13 Size : 550.25kb User : 王晶

HTML语言教程-HTML language course
Date : 2008-10-13 Size : 24.21kb User : 姚刚

HTML 技 巧 集-HTML skillful collection
Date : 2008-10-13 Size : 4.74kb User : 姚刚

cpp文件转换为html文件的源程序-cpp conversion of the source document html
Date : 2008-10-13 Size : 17.58kb User : 永洪

Html book learning for beginers
Date : 2025-07-16 Size : 28.6mb User : Alex0902

DL : 0
HTML的用户注册界面设计,垂直与水平导航栏的设计(HTML user registration interface design, vertical and horizontal navigation bar design)
Date : 2025-07-16 Size : 2kb User : 蒲公英的梦

使用HTML、CSS、Javascript制作的整站,新手练习(Use HTML, CSS, Javascript to make the whole station, novice practice.)
Date : 2025-07-16 Size : 2.3mb User : kimwill

DL : 0
包含许多实用的,好看的HTML模板,可以在许多网页上实现套用,是初学者不可多得的好例子(It contains many practical and beautiful HTML templates, which can be applied to many webpages. It is a good example for beginners.)
Date : 2025-07-16 Size : 6.93mb User : code11

一个HTML编辑器,可以实现简单的HTML编辑及提供开发思路(A HTML editor that enables simple HTML editing and development ideas.)
Date : 2025-07-16 Size : 21kb User : 李百在

顺丰面单模板.html模板,节省开发时间(SF's single template html template saves development time)
Date : 2025-07-16 Size : 64kb User : 69879879

《Head First HTML and CSS 2nd》一书源代码。("Head First HTML and CSS 2nd" book source code)
Date : 2025-07-16 Size : 17.68mb User : zwygto

网上购物零售商城网站html源码,漂亮大气,有css和js打包一起(Online shopping retail City website HTML source code, beautiful atmosphere, CSS and JS packaged together)
Date : 2025-07-16 Size : 6.67mb User : hgui88

HTML识别微信环境并请求浏览器打开,最近做很多HTML5的项目,很多页面会通过微信微博等SNS分享出去。在分享页面上提供公司APP的下载。但是在很多应用的浏览器中,点击下载链接无法下载应用。那么针对这些浏览器我们需要给用户提示从safari或者系统自带的浏览器打开分享页面。通过js就可以判断当前页面是在什么浏览器打开的。(HTML identifies the WeChat environment and requests the browser to open. <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> .link{display: none;} .show{display: block;} </style> </head> <body>)
Date : 2025-07-16 Size : 891kb User : 建安君

HTML+CSS项目实例,包括一些简单的静态页面设计,以及包含Vue、jQuery的一些实例(HTML+CSS project examples, including some simple static page design, as well as some examples including Vue and jQuery)
Date : 2025-07-16 Size : 3.91mb User : violetb

HTML注册登录页面模板,左右切换,用户注册、用户登录两种功能。(HTML registration login page template, left and right switching, user registration, user login two functions.)
Date : 2025-07-16 Size : 309kb User : 落魂秋水

网站源代码,前端开发实例。蓝色网络科技公司HTML网站模板(HTML website template of blue network technology company)
Date : 2025-07-16 Size : 3.33mb User : llmrlch
« 1 2 ... 5 6 7 8 9 1011 12 13 14 15 ... 50 »
CodeBus is one of the largest source code repositories on the Internet!
Contact us :
1999-2046 CodeBus All Rights Reserved.