ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:19.53KB ,
资源ID:11410385      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-11410385.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(简述通过Java解析HTML文档.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

简述通过Java解析HTML文档.docx

1、简述通过Java解析HTML文档简述通过Java解析HTML文档 简述通过Java解析HTML文档 2011-04-01 09:14:05摘要 JAVA 语言是目前 Internet 上大型的 WEB 应用程序开发时使用得最热门的编程语言, 本文从实践的角度重点阐述 Java 语言中输入流类 StreamTokenizer 在编写 HTML 文件分析程序中的应用。 关键词: java html StreamTokenzer HtmlTokenizer Applet 计算机摘要JAVA语言是目前Internet上大型的WEB应用程序开发时使用得最热门的编程语言,本文从实践的角度重点阐述Java语

2、言中输入流类StreamTokenizer在编写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 HTML DOM 分析器和一个页面表现引擎。Cobra支持HTML4,Javascript 和CSS2。 Java Mozilla Html Parser能够将html解析成Java

4、Document对象。它是一个基于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)来描述,以此来定义文件的结构与文件间的逻辑关联。简而言之,HTML是以标记来描述文件中的多媒体信息。3 Web与HTML互联关系Web服务器

6、的核心是对HTML文件中的各标记(Tag)作出正确的分析,一种编程语言的解释程序也是对源文件中的保留字进行分析再做解释的。实际应用中,我们也常常会遇到需要对某一特定类型文件进行关键字分析的情况,比如,需要将某个HTML文件下载并同时下载与之相关的.gif、.class等文件,此时就要求对HTML文件中的标记进行分离,找出所需的文件名及目录。利用Java的输入流类StreamTokenizer进行HTML文件的分析,效果较好。在此,我们要实现从已知的Web页面下载HTML文件,对其进行分析后,下载该页面中包含的HTML文件(如果在Frame中)、图像文件和Class(Java Applet)文件

7、。4 程序实现4.1 编写嵌入java小程序字节码文件的html文档通过html的标记符可以把编译形成的字节码文件app2.class嵌入到html文档中。其最基本的形式为:其中,code属性指明了所要加载的字节码文件,它与网页在同一个文件夹下:width和height属性分别给出了Applet显示区域的宽和高,单位为像素。使用Windows的记事本,键入下面的html源文件:并将网页文件保存在字节按在的目录下,文件名可任意命名,例如page.htm。这样就把小程序字节码文件App2.class嵌入到网页page1.htm中。4.2 利用Java实现HTML的编辑首先要有一个编辑框,这个编辑框

8、其实就是一个可编辑状态的网页, 我们用iframe来建立编辑框。 并且在加上javascript代码来指定HtmlEdit有编辑功能: var editor;editor = document.getElementById(HtmlEdit).contentWindow; /只需键入以下设定,iframe立刻变成编辑器。editor.document.designMode = On;editor.document.contentEditable = true;/但是IE与FireFox有点不同,为了兼容FireFox,所以必须创建一个新的document。editor.document.ope

9、n();editor.document.writeln();editor.document.close(); /字体特效 加粗方法一 function addBold() editor.focus(); /所有字体特效只是使用execComman()就能完成。editor.document.execCommand(Bold, false, null); /字体特效 加粗方法二 function addBold()editor.focus(); /获得选取的焦点var sel = editor.document.selection.createRange();insertHTML(+sel.te

10、xt+);function insertHTML(html)if (editor.document.selection.type.toLowerCase() != none)editor.document.selection.clear() ;editor.document.selection.createRange().pasteHTML(html) ; 4.3 对某个令牌流进行分析之前,首先应对该令牌流的语法表进行设置,在本例中,即是让程序分出哪个单词是HTML的标记。import java.io.*;import http:/java.lang.String;class HtmlToke

11、nizer extends 好论文123 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; /判断是否在标记之中/构造器,定义该令牌流的语法表。p

12、ublic HtmlTokenizer(BufferedReader r) super(r);this.resetSyntax(); /重置语法表this.wordChars(0,255); /令牌范围为全部字符this.ordinaryChar(标记两边的分割符this.ordinaryChar(); /end of constructorpublic int nextHtml()int token; /令牌tryswitch(token=this.nextToken() case StreamTokenizer.TT_EOF: /如果已读到流的尽头,则返回TT_EOFreturn HTML

13、_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) /标记FRAMEreturn HTML_FRAME;else if(sval.toUpperCase

14、().indexOf(IMG)!=-1 & !outsideTag) /标记IMGreturn HTML_IMAGE;else if(sval.toUpperCase().indexOf(BACKGROUND)!=-1 & !outsideTag) /标记BACKGROUNDreturn HTML_BACKGROUND;else if(sval.toUpperCase().indexOf(APPLET)!=-1 & !outsideTag) /标记APPLETreturn HTML_APPLET;default:System.out.println (Unknown tag: +token);

15、return HTML_UNKNOWN; /end of casecatch(IOException e)System.out.println(Error:+e.getMessage();return HTML_UNKNOWN; /end of nextHtmlprotected boolean allWhite(String s)/过滤所有空格/实现略/ end of allWhite /end of class5 程序调试心得5.1 Java是严格区分大小写的,但html标记语言并不区分别大小写,因此除嵌入的字节码文件名大小写必须与编译后的文件名一致外,其他标记符大小写都可以。5.2 对某

16、个令牌流进行分析之前,首先应对该令牌流的语法表进行设置5.3 懂得了在一程序中如何引用自定义的类中的方法和变量,在程序开头加入import 类名;在程序中加入类名实例=new 类名(); 然后使用实例.方法(),实例.变量即可。5.4 htmlparser用于对html页面进行解析很实用,它是一个功能比较强大的工具。本文对Java解析HTML文档的过程作了简单阐述,并通编写嵌入java小程序字节码文件的html文档、利用Java实现HTML的编辑及StreamTokenzer建立了深入的分析。Java实现对Html文档的分析具有快速性、简单性等特点,当然在其实现过程中必将存在着一些不足之处,以

17、后将会慢慢改进。但是,随着计算机语言的发展,对网络更加的人性化的迫切要求,java技术随速发展必将成最受欢迎的计算机网络编辑语言之一。HTML解析器 2011-04-03 10:05:53今天已经是有做HTML解析器的想法好几天了,一开始是一个朋友要我帮忙处理下从网页上的表格中获取信息,然后分项保存到数据库中,实现数据本地化。一开始就打算好好做一个,以后也可以通用,经过一个多星期的资料收集和试验,现在分析器的雏形已经出来了。 在一开始的时候打算直接用.NET中字符处理的方法来做,但过于复杂和麻烦,而且效率不高;然后有想到把HTML当做XML用XML相关的类来解析,但 HTML的语法比较松散;还

18、试过SgmlReader,这个东西的解析也不够满意。最后觉得用正则表达式来做(我学习了5天,已经深入到自动机的理论), 选用的原因: 一、 效率高; 二、 容错性好。应为HTML没有XML那样严格的语法规范,HTML要松散些。 但正则表达式有个缺点,如果要匹配最近的正则表达式要相当复杂,而且我也没有研究出来。我的解决办法是象 Table用Match匹配出文字,然后用Match的index获得匹配的位置,再用SubString方法取得值字符串。效果还不错哦。 现在遇到的问题:如果Table中包含Table那么对TR的分解将出来错误。这个解析器只是作为个人爱好去研究,陆陆续续的投入精力,持续了很长

19、时间,这期间发生了很多的事情。我在上海落脚很长时间后才又继续开发,并把项目命名为Wittiness。项目的目的:构建一个Web信息挖掘机,能够高效方便的从网页中截取到需要的信息。构建思路是:解析HTML标记 - 构建层次对象 - 查询获取承载了需要信息的对象 - 按对象层次输出结果其中难度比较大的就是解析标记和查询获取对象。解析标记我用过了正则表达式,字符串判断,SgmlReader,最好觉得SgmlReader用起来简单,效率也高。查询获取对象,目前实现的主要方法是以表为单位,按索引数来获得,这一块花的时间也比较少。新的想法:把HTML拆开读取为string 单位为一个HTML标记,用两个数组指针来确定要截取的部分,以个从头开始检索,一个从尾开始检索,这样能很好的解决标记配对的问题。在构造对象层次结构 时候也只用数组指针,我想这样应该能提供效率和节约内存。再往后,可以把这个方法改进为流式处理,那么在读取大文件的时候效率就更高了。如果能有一个GUI的界面来让用户选择需要截取的内容,那么操作就更加方便了,不知道,象DreamWeaver这样的编辑器是怎么样开发的。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2