2017-01-16 55 views
0

为了练习我的技能即时编写一个html解析器。我想到的想法:是我从头开始创建html分析器的想法吗?

  • 定义我想通过正则表达式来标记化。
  • 接受一些html作为字符串。
  • 通过html字符串循环。
  • 将有关令牌的信息(如内容和位置)保存为对象。
  • 如果令牌具有另一个令牌,那么该令牌是父令牌的子对象。
  • 完成对象图。

  • 创建适当的获取者和设置者。

你认为这有意义吗?

+0

应该阅读着名的答案[你不能解析HTML与正则表达式](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454# 1732454) – charlietfl

+1

HTML规范中的[HTML解析器的描述](https://html.spec.whatwg.org/multipage/syntax.html#parsing)是基于字符的并使用状态机,所以我会从看着这个灵感。 – Blender

回答

1

正则表达式不适合用于沉重的HTML解析,例如: regular expressions are a tool that is insufficiently sophisticated to understand the constructs employed by HTML

最好的办法是使用state machinetokeniser为基础的实现。

您还可以阅读有关解析HTML5 specification中HTML5的更多信息。

+0

虽然我如何标记文本?我不能想到除了一些简单的正则表达式或使用拆分 – Asperger

+0

我只需要定义像白色空间的分隔符 – Asperger