0. 前言
这算是从零开始的第二个系列了。上一次是从零开始写日志01,从零开始写日志2。这次阅读了TinyXML的源码(Ps:我看的是1,TinyXML2大概使用过)想着就开始了这个系列的第二部。
1. TinyXML的大体逻辑
1.1 如何阅读源码
这里简单介绍下自己是怎么阅读源码的。
- 阅读源码时候,切忌不要一上来就看源码。一般是先使用。在已经了解相关知识(比如XML的结构)情况下去跑测试代码。
- 写一写自己的代码去印证你的逻辑。
- 然后利用阅读源码软件和gdb,从一个测试例子开始,一步一步追踪过程。
编程的本质就是状态变换。当你了解了所有的状态变换的时候,那么你就已经掌握了,剩下的就是code了。
比如说我想知道tinyXML是怎样解析字符串并建立XML树的。我就拿出一张纸,跟随gdb或者vscode将每次树的变化画出来。并且记录call stack的信息。
1.2 逻辑
这里就不讲我是怎么一步一步追踪的了。
- LoadFile将XML文件读取到内存中。
- 一个主循环:解析XML的每一行。
- 解析标签<>,识别标签是元素还是声明。
- 查看是否有属性。
- 解析完毕后,将对应节点插入到XML树中。
- 生成XML树后,就是输出,只要了解XML树的结构,输出非常easy。
接下来的文章,我将按照上面这个逻辑一步一步去写一个自己的XML出来。