请问那位大哥有过开发HTML浏览器(读取网页标签的算法)的经验?100分送上

Putao 2000-08-27 09:11:00
小弟正在开发一简易网页浏览器,需要在程序中识别网页标签,
包括:标签名(如:FORM),
参数名(如:COLOR),
参数值(如:#FFFFFF),
标签结尾(如:〈/FORM〉,
最重要的还是标签名。请问用什么算法可以搞定?

请给出原理解释,有源码(Delphi)更好!
...全文
340 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Putao 2000-09-09
  • 打赏
  • 举报
回复
To deanjiang:
“空白符不只是空格,可以是“\n\b\r\s”...”
是什么意思,请指教。
Putao 2000-09-08
  • 打赏
  • 举报
回复
To deanjiang:
“空白符不只是空格,可以是“\n\b\r\s”...”
是什么意思,请指教。
deanjiang 2000-09-08
  • 打赏
  • 举报
回复
按照rfc文档做出来当然最好,不过IE与NS都不是这样做的,因为显示中的HTML大都不完全符合语法,最常见的就是该匹配的标记没有成对出现。你的要求并不高,所以就好实现了,不用看什么变异原理。下面是我的思路
1 识别标记:
标记开始的形式是<XXXX ,即“<”字符紧接着一系列的英文字母或数字,中间不可一有空白符,之后以空白符分隔;空白符不只是空格,可以是“\n\b\r\s”...
如果标记在一个注释内部、或在属性内就忽略掉。
2 识别属性
识别处标记的首部,之后出现属性,有两种情况:
1)单独的英文字母或数字序列,后面没有尾随“=”或“一系列空白符=”,可是做一个属性,如checked属性。(后面的描述大多可以间隔空白符,不一一说明了)
2)后面尾随“=”或“一系列空白符=”,则得到一个属性的名称,等号后面的如果出现“"”
则降下一个“"”之间的内容当作属性(这里不支持c风格的转移序列,而是用HTML转移序列。)。另一种情况,等号后面没有出现“"”,简单的把跟随的文字序列作为属性值,直到发现空白符或>符号。
属性结束后发现>符号,则一个标记处理完毕
3。实际系统中,结束标签可以忽略,</XXXX 只要发现就搜索到下一个>,将中间的字符忽略。
处理中需要使用堆栈,每识别完一个开始标签将其压栈,发现某一个标记的结束标签后,在堆栈中不断弹出栈顶元素,每弹出一个元素此元素的作用域就结束了,直到弹出的元素是相应的开始标记为止。实际上结尾标记从来不进入堆栈,这样便解决了标记不匹配的问题。

从实现的角度看,可以把超文本注释、属性的引号字符串,连续的非空白符文本,作为处理的最小单元,只可以出现在栈顶,当他们在栈顶时,压栈操作可以忽略。这样就只需要一遍单向扫描。至一点对实际的浏览器是必须的,因为要在文件完全下在完之前显示。


Putao 2000-09-08
  • 打赏
  • 举报
回复
To deanjiang:
“空白符不只是空格,可以是“\n\b\r\s”...”
是什么意思,请指教。
kill_kill01 2000-09-04
  • 打赏
  • 举报
回复
关注
Putao 2000-09-04
  • 打赏
  • 举报
回复
我只想实现让程序知道:这是一个标签.
请先回答这个最简单的问题!

各位大虾,拜托了!
killjapan05 2000-09-03
  • 打赏
  • 举报
回复
ok?
mars22 2000-09-03
  • 打赏
  • 举报
回复
如果用MFC编程,倒是可以直接使用CHtmlView类。
IE有的功能它基本都有。
Putao 2000-09-03
  • 打赏
  • 举报
回复
我只想实现让程序知道:这是一个标签.
请先回答这个最简单的问题!
Putao 2000-09-03
  • 打赏
  • 举报
回复
我只想实现让程序知道:这是一个标签.
请先回答这个最简单的问题!
Putao 2000-09-03
  • 打赏
  • 举报
回复
那么,如果我是想编一个网页语法检查器,改如何实现呢?
ahao 2000-09-03
  • 打赏
  • 举报
回复
HTML的的标签配对不是很严格,某些可以只有前半部,
某些可以只有后半部...

Putao 2000-09-02
  • 打赏
  • 举报
回复
to llt:
是英文的,头大了!!!
llt 2000-09-02
  • 打赏
  • 举报
回复
简单的办法就是找一个免费网页浏览器原码来参考。若想了解原理,可以看rfc1945、rfc2068。
bokei 2000-09-02
  • 打赏
  • 举报
回复
编译原理说白了就是讲如何对程序进行编译的算法,有很多讲这问题的书。

通常讲编译原理的书里都有一部分是讲语法分析的,可以看一下,原理都一样的。

killjapan05 2000-09-01
  • 打赏
  • 举报
回复
好好看看编译原理吧????
读入一字符串,然後进行处理!与编译原理有何干系?
Putao 2000-09-01
  • 打赏
  • 举报
回复
什么是编译原理,你有吗?请给我Email一份
subzero 2000-08-30
  • 打赏
  • 举报
回复
好好看看编译原理吧!

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧