Project2 实习报告
结构设计:根据 DOM 的树形结构在 MSDN 中查找了类的成员函数和接口
文本保存形式分为五个类 XmlNode,XmlElement,XmlAttribute,XmlText,XmlDocument
其中 XmlNode 为基类其他四个类是由这个类派生出来的,其各功能分别有选择性的保存 xml
文件中不同的部分和处理函数。
XmlNode 类
1、 XmlNode 中包括一个 XmlNode*型的容器,XmlNode*型的指针 parent,和一个 string 型
的 value,其中分别保存孩子结点,父节点和当前位置的内容。
2、其中各数据类型定义为 XmlNode *parent; vector<XmlNode *> child; string value;
3、其中包含自己和各派生类的成员函数声明,具体内容参见代码注释。
XmlElement 类:
这个类是整个数据类型的最为核心的类,是整个程序需要建的树的结点数据和处理函数,集
成了 XmlNode 类的私有数据成员,后面的 XmlAttribute 类和 XmlText 类都是他的 attribute 数
据值和 text 数据值
1、 继承 XmlNode 的所有私有数据成员,并且每一个继承私有数据都在这个新类中得到使用,
该数据类型的父结点也为 XmlElemen 型,为这个结点在这棵树上的父亲结点,并由
parent 指针指向,包含孩子结点容器(该容器在非叶子结点中保存子结点,在叶子结点
中保存 XmlText 型数据,并且额外增加了一个名为 attribute 的 XmlNode*型的容器,保
存结点的所有 attribute 值。
2、 函数功能上具有插入删除修改当前结点,添加子结点函数以及访问 attribute 数据的函数
XmlAttribute 类:
这个类是结点中的 attribute 值,是 XmlElement 类的一部分成员,每一个 XmlElement 类型的
结点都可能有一个或多个 attribute 数据。
1、 继承 XmlNode 的所有私有数据成员,其中得到由于 attribute 本身数据结构不存在子
结点,其中也不包含其他结构,所以得到应用的数据成员为,parent 指向其父结点
(一个 XmlElement 类,value 保存 attribute 数据的内容,自身又增加了 name 这个
string 类型的成员,保存 attribute 数据的名称。
2、 函数功能上具有 value、name 值的访问和修改当前 attribute 值、在父结点下添加新
的 attribute 成员和删除当前 attribute 值
XmlText 类:
这个类类似于 XmlAttribute 是 XmlElement 类的一部分数据,在数结构中,只有 XmlElement
的叶子结点具有一个或多个 XmlText 型数据,非叶子结点没有 text 数据。
1、 继承 XmlNode 的所有数据成员,由于只是其中一个部分数据实现,得到应用的仅为
parent 指针(指向他的父亲结点,一个 XmlElement 型数据),value 保存该 XmlText
型数据的内容。
2、 函数功能包括在该结点父结点下插入新的 XmlText 结点、删除原有结点、修改当前
结点
XmlDocument 类:
这个类的主要功能是与文件关联,实现文件的读入从而实现树的建立,新增结点的创建,数
据输出到文件等。
1、 继承 XmlNode 的所有数据成员,新增一个 info 指针、一个 root 指针、一个 XmlNode*
型容器,info 指针指向 Xml 开头的版本信息,类似于整个文件的开头,root 指针指
向整棵树的根结点,XmlNode 型 vector 容器中存放整个书的所有子结点,方便最后