随手写了个 xml 解析器(taoxml)

陪她去流浪 桃子 2015年09月19日 编辑 阅读次数:3039

最近写的小玩具有点多,代码量很少,但也实现了一定的功能。仅仅是作为例子来写,没考虑太多,比如性能等等。

taoxml 是一个简单的 xml 解析器,能把xml字符串解析成 DOM 树形结点构造。可遍历,可查找。

为什么要写

之前在面试SD时,面试官有问到这个问题(有些相关),我只说会,但没成说我写过,我确实也没写过。不过到今天为止,我已经写了一个了。

功能支持

目前支持的功能:

  1. 解析xml字符串到树形结构;
  2. 支持属性的解析;
  3. 支持文本节点的解析;
  4. 支持部分实体标签的解析;
  5. 支持节点的遍历;
  6. 支持节点的快速查找定位;

目前已知不支持的功能:

  1. 文档声明;
  2. 注释;
  3. CDATA;
  4. 其它;

解析方式

taoxml_t 类中两个主要的函数:

  1. token: 即 tokenizer,根据 开始条件、简单的模式匹配 解析出 xml字符串 中的各 词法单元;
  2. parse: 即 parser,作用于 tokenizer 返回的词法单元类别,按语法规则解析出XML文档树;

源代码

放在 GitHub 上,地址:https://github.com/movsb/taoxml.git,完全开源,仅供娱乐。

开发环境:Visual Studio 2013, C++(11)。

标签:xml · 我的小项目