最近写的小玩具有点多,代码量很少,但也实现了一定的功能。仅仅是作为例子来写,没考虑太多,比如性能等等。
taoxml 是一个简单的 xml 解析器,能把xml字符串解析成 DOM 树形结点构造。可遍历,可查找。
为什么要写
之前在面试SD时,面试官有问到这个问题(有些相关),我只说会,但没成说我写过,我确实也没写过。不过到今天为止,我已经写了一个了。
功能支持
目前支持的功能:
- 解析xml字符串到树形结构;
- 支持属性的解析;
- 支持文本节点的解析;
- 支持部分实体标签的解析;
- 支持节点的遍历;
- 支持节点的快速查找定位;
目前已知不支持的功能:
- 文档声明;
- 注释;
- CDATA;
- 其它;
解析方式
taoxml_t 类中两个主要的函数:
- token: 即 tokenizer,根据 开始条件、简单的模式匹配 解析出 xml字符串 中的各 词法单元;
- parse: 即 parser,作用于 tokenizer 返回的词法单元类别,按语法规则解析出XML文档树;
源代码
放在 GitHub 上,地址:https://github.com/movsb/taoxml.git,完全开源,仅供娱乐。
开发环境:Visual Studio 2013, C++(11)。