版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、简述通过 Java 解析 HTML 文档简述通过 Java 解析 HTML 文档2011-04-01 09:14:05摘要JAVA语言是目前Internet上大型的WEB应用程序开发时使用得最热门的编程语言, 本文从实践的角度重点阐述 Java 语言中输入流类 StreamTokenizer 在编写HTML文件分析程序中的应用。关键词:java htmlStreamTokenzer HtmlTokenizer Applet计算机摘要 JAVA 语言是目前Internet 上大型的 WEB 应用程序开发时使用得最热门的编程语言,本文从实践的角度重点阐述Java 语言中输入流类StreamToke
2、nizer在编写 HTML 文件分析程序中的应用。关键词: java html StreamTokenzer HtmlTokenizer Applet计算机信息技术已经渗透到人们生活的方方面面,网络信息已成为我们日常信息主要来源之一。而这些信息时如何在这神奇的网络上体现出的呢,这些网站是如何用机器语言编辑的等等。 弄明白这些的方法很多, 在这将通过 java 简单解析 html 文件,并举实例进行说明。1 Java 语言的概述1.1 Java 语言的主要特点Java 语言是一种适用于网络编程的语言,它的基本结构与C+ 极为相似,但却简单得多。它集成了其它一些语言的特点和优势,又避开了它们的不足
3、之处。Java 的主要特点有:简单性、平台独立性、面向对象的技术、多线程、动态性、安全性、高性能、分布性、强大性、解释性、可移植性等。1.2 Java 解析 Html 工具Java HTML Parser提供了一组Tag 对象,这些对象可以深入解析一棵可搜索的结构树。HtmlRipper是一个 Java 包能够按照预先定义好的规则设置来从 Web 页中抽取动态数据.Cobra 是一个 HTML 工具包。它包含一个纯Java HTMLDOM分析器和一个页面表现引擎。Cobra 支持HTML4,Javascript和 CSS2 。Java Mozilla Html Parser能够将 html 解
4、析成 JavaDocument对象。它是一个基于Mozilla Html解析器封装的Html 解析类库。因此能够为开发人员提供一个浏览器质量的HTML 解析器。1.3 Java Applet通常翻译为 Java 小应用程序, 也称 Java 小程序, 它不是能独立运行的 Java 程序,而是通过支持 Java 浏览器来运行的Java 程序。在 Java 语言刚刚出现的时候, Java 最吸引人的就是 JavaApplet ,用来创建 WWW 上的页面。2 HTML 语言剖析HTML 全名为 Hyper Text Markup Language,中文译为超文本标记语言,这是创建网页的脚本语言,它
5、提供了精简而有力的文本定义,使我们可以设计出多姿多彩的超媒体文本Hypermedia Document ),通过 HTTP ( Hyper Text Teansfer Protocol )通信协议,是的 HTML 文本可以在全球互联网( World Wide Web ,WWW )上进行跨平台的文件交换。HTML 文件为纯文本的文件格式,可以用任何文本编辑器或者用 FrontPage 、 Dreamweaver等 Web 开发制作工具来编辑。至于文件中的文字、字体、字体大小、段落、图片、表格及超级链接, 甚至是文本名称都是以不同意的标记( Tags )来描述,以此来定义文件的结构与文件间的逻辑关
6、联。简而言之, HTML 是以标记来描述文件中的多媒体信息。3 Web 与 HTML 互联关系Web 服务器的核心是对HTML 文件中的各标记 ( Tag )作出正确的分析,一种编程语言的解释程序也是对源文件中的保留字进行分析再做解释的。实际应用中,我们也常常会遇到需要对某一特定类型文件进行关键字分析的情况,比如,需要将某个 HTML 文件下载并同时下载与之相关的.gif 、.class等文件, 此时就要求对HTML 文件中的标记进行分离,找出所需的文件名及目录。利用Java 的输入流类StreamTokenizer进行 HTML 文件的分析,效果较好。在此,我们要实现从已知的 Web 页面下
7、载 HTML 文件,对其进行分析后,下载该页面中包含的 HTML 文件(如果在 Frame 中)、图像文件和 Class ( Java Applet )文件。程序实现4.1 编写嵌入 java 小程序字节码文件的 html 文档通过 html 的标记符可以把编译形成的字节码文件 app2.class 嵌入到 html 文档中。其最基本的形式为:其中,code 属性指明了所要加载的字节码文件, 它与网页在同一个文件夹下: width 和 height 属性分别给出了 Applet 显示区域的宽和高,单位为像素。使用 Windows的记事本,键入下面的html 源文件:并将网页文件保存在字节按在的
8、目录下,文件名可任意命名,例如page.htm 。这样就把小程序字节码文件App2.class嵌入到网页 page1.htm中。4.2 利用 Java 实现 HTML 的编辑首先要有一个编辑框,这个编辑框其实就是一个可编辑状态的网页,我们用 iframe 来建立编辑框。并且在加上javascript代码来指定HtmlEdit有编辑功能:var editor;editor =document.getElementById(HtmlEdit).contentWindow;/只需键入以下设定,iframe 立刻变成编辑器。/但是 IE 与 FireFox 有点不同,为了兼容FireFox ,所以必须
9、创建一个新的document 。字体特效 加粗方法一function addBold()editor.focus(); /所有字体特效只是使用execComman()就能完成。/字体特效 加粗方法二function addBold()editor.focus(); /获得选取的焦点function insertHTML(html)none) ;4.3 对某个令牌流进行分析之前,首先应对该令牌流的语法表进行设置,在本例中,即是让程序分出哪个单词是HTML的标记。class HtmlTokenizer extends好论文 123StreamTokenizer /定义各标记,这里的标记仅是本例中必
10、须的,可根据需要自行扩充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.rese
11、tSyntax(); /重置语法表this.wordChars(0,255); /令牌范围为全部字符this.ordinaryChar(标记两边的分割符this.ordinaryChar(); /end of constructor public int nextHtml() int token; / 令牌tryswitch(token=this.nextToken()case StreamTokenizer.TT_EOF:/如果已读到流的尽头,则返回TT_EOFreturn HTML_EOF;case 进入标记字段outsideTag=false;return nextHtml();case
12、 : / 出标记字段outsideTag=true;return nextHtml();case StreamTokenizer.TT_WORD:/若当前令牌为单词,判断是哪个标记if (allWhite(sval)return nextHtml(); /过滤其中空格else if(sval.toUpperCase().indexOf(FRAME)!=-1 & !outsideTag) /标记 FRAMEreturn HTML_FRAME;else if(sval.toUpperCase().indexOf(IMG) !=-1 & !outsideTag) / 标记 IMG return HT
13、ML_IMAGE;else if(sval.toUpperCase().indexOf(BACKGROUND)!=-1 & !outsideTag) /标记 BACKGROUNDreturn HTML_BACKGROUND;else if(sval.toUpperCase().indexOf(APPLET) !=-1 & !outsideTag) / 标记 APPLET return HTML_APPLET;default: /end of nextHtmlprotected boolean allWhite(String s)/过滤所有空格/实现略/ end of allWhite /end
14、 of class5 程序调试心得5.1 Java 是严格区分大小写的, 但 html 标记语言并不区分别大小写,因此除嵌入的字节码文件名大小写必须与编译后的文件名一致外,其他标记符大小写都可以。5.2 对某个令牌流进行分析之前,首先应对该令牌流的语法表进行设置5.3 懂得了在一程序中如何引用自定义的类中的方法和变量,在程序开头加入 import 类名;在程序中加入类名实例 =new 类名 (); 然后使用实例 .方法(),实例 .变量即可。5.4 htmlparser用于对 html 页面进行解析很实用,它是一个功能比较强大的工具。本文对 Java 解析 HTML 文档的过程作了简单阐述,并
15、通编写嵌入 java 小程序字节码文件的 html 文档、利用 Java 实现 HTML 的编辑及 StreamTokenzer 建立了深入的分析。 Java实现对 Html 文档的分析具有快速性、简单性等特点,当然在其实现过程中必将存在着一些不足之处,以后将会慢慢改进。但是,随着计算机语言的发展,对网络更加的人性化的迫切要求, java 技术随速发展必将成最受欢迎的计算机网络编辑语言之一。HTML 解析器2011-04-03 10:05:53今天已经是有做HTML 解析器的想法好几天了,一开始是一个朋友要我帮忙处理下从网页上的表格中获取信息,然后分项保存到数据库中,实现数据本地化。一开始就打
16、算好好做一个,以后也可以通用, 经过一个多星期的资料收集和试验,现在分析器的雏形已经出来了。在一开始的时候打算直接用.NET 中字符处理的方法来做,但过于复杂和麻烦,而且效率不高; 然后有想到把HTML 当做 XML 用 XML 相关的类来解析,但HTML 的语法比较松散;还试过SgmlReader ,这个东西的解析也不够满意。最后觉得用正则表达式来做(我学习了5 天,已经深入到自动机的理论), 选用的原因:一、效率高;二、容错性好。应为 HTML 没有 XML 那样严格的语法规范, HTML 要松散些。但正则表达式有个缺点,如果要匹配最近的正则表达式要相当复杂,而且我也没有研究出来。我的解决
17、办法是象Table用 Match 匹配出文字, 然后用 Match 的 index 获得匹配的位置,再用 SubString 方法取得值字符串。 效果还不错哦。 现在遇到的问题:如果 Table 中包含 Table 那么对 TR 的分解将出来错误。这个解析器只是作为个人爱好去研究,陆陆续续的投入精力, 持续了很长时间, 这期间发生了很多的事情。我在上海落脚很长时间后才又继续开发,并把项目命名为Wittiness 。项目的目的:构建一个Web 信息挖掘机,能够高效方便的从网页中截取到需要的信息。构建思路是:解析HTML 标记- 构建层次对象- 查询获取承载了需要信息的对象 - 按对象层次输出结果其中难度比较大的就是解析标记和查询获取对象。解析标记我用过了正则表达式,字符串判断,SgmlReader ,最好觉得 SgmlReader 用起来简单,效率也高。查询获取
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 员工工作保证书范文汇编六篇
- 2024年农业产业化股权投资与转让合同范本3篇
- 卡尔曼滤波与组合导航考试试卷A
- 六年级第一学期家长会
- 《FN临床应用》课件
- 安徽省怀远县包集中学高中化学有机课件鲁科版选修
- 体育馆塔吊信号工聘用协议
- 桥梁维修钻探施工合同
- 美术馆建设土石方施工合同
- 水电安装保养室外施工合同
- 我们对于一棵古松的三种态度
- 《尹定邦设计学概论》试题及答案
- 牵引管管道施工方案【实用文档】doc
- 志愿服务证明-模板
- 羽毛球基本功的学与练-教学实施报告(教师教学能力大赛)
- 人教版七年级上册地理复习提纲(背诵版)
- GB/T 30234-2013文物展品标牌
- GB/T 1927.5-2021无疵小试样木材物理力学性质试验方法第5部分:密度测定
- GB/T 14996-2010高温合金冷轧板
- GB 19504-2004原产地域产品贺兰山东麓葡萄酒
- 艺术人才培养资助项目申报表
评论
0/150
提交评论