论文无忧网提供:计算机毕业论文范文|计算机毕业设计|计算机毕业论文
栏目导航 ASP Java Web .NET VB6.0 JAVA VC VF DELPHI PB 计算机网络 计算机科学与技术 PHP 安卓APP 其他 C# 代写论文
当前位置: > 计算机 > 计算机科学与技术 >

文档资料管理系统(论文+程序)

4.2XML存储结构的设计

   本系统的用XML编写存储结构,参照一般的XML编写方法包含以下几个 copyright paper51.com

类:XmlContainer(XmlTree),XmlFile,XmlLeaf,XmlNode,XmlParser。 copyright paper51.com

表1 XmlFile设计表 内容来自www.paper51.com

类名:XmlFile

paper51.com

设计用途:用于将一个磁盘上的XML文档以字符串的方式读入到内存中,或者将以字符串方式存于内存中的XML文档输出到磁盘。

内容来自www.paper51.com

方法/属性

内容来自www.paper51.com

作用 http://www.paper51.com

string  _doc 内容来自论文无忧网 www.paper51.com

保存XML字符串的内部成员变量。

内容来自www.paper51.com

bool load(const char* file) http://www.paper51.com

将参数file指定的文件载入类的成员变量doc中。

内容来自www.paper51.com

bool save(const char* file) 内容来自www.paper51.com

将成员变量doc的值保存到file指定的文件中。

copyright paper51.com

const string& getdoc()

内容来自论文无忧网 www.paper51.com

返回doc的值。

内容来自www.paper51.com

bool setdoc(const string& _doc)

内容来自www.paper51.com

以_doc设置doc的值。

copyright paper51.com

表2 Xmlparser设计表 内容来自www.paper51.com

类名:XmlParser paper51.com

设计用途:用于实现XmlTree和字符串化的XML文档的相互转换。 内容来自www.paper51.com

方法/属性 内容来自www.paper51.com

作用 内容来自论文无忧网 www.paper51.com

static XmlTree* doc2tree(const string& doc) copyright paper51.com

将doc转换成一个XmlTree。

http://www.paper51.com

static string tree2doc(XmlTree* pXmlTree)

paper51.com

将一个XmlTree转换为字符串。 http://www.paper51.com

static int gettoken(string strDoc, string& token) 内容来自www.paper51.com

从strDoc中获取第一个标记(或者值) paper51.com

说明:正是通过这两个类的协作,实现了XML文档的读写和转换。例如: http://www.paper51.com

XmlFile file; http://www.paper51.com

    if(!file.load("Settings\\items.xml")) http://www.paper51.com

    {

paper51.com

        AfxMessageBox("打开数据文件items.xml失败");

内容来自论文无忧网 www.paper51.com

        return; copyright paper51.com

    }

paper51.com

    XmlTree*pTree = XmlParser::doc2tree(file.getdoc()); http://www.paper51.com

    if(!pTree) 内容来自论文无忧网 www.paper51.com

    { paper51.com

        AfxMessageBox("转换数据文件items.xml失败");        内容来自论文无忧网 www.paper51.com

        return; paper51.com

}

paper51.com

上面的代码段首先使用XmlFile的实例load了一个XML文档,然后使用XmlParser::doc2tree创建了一个XmlTree,从而为内存中使用XML提供了基础。

http://www.paper51.com

下面说明一下对XML的处理方案。使用树型结构表达XML文档,可以比较方便的进行相应的读写删改操作。因为XML本身就是一个数型的结构。例如: 内容来自论文无忧网 www.paper51.com

<DATA>

http://www.paper51.com

<item>

copyright paper51.com

<name>tttttt</name>

paper51.com

<catalogs>13</catalogs> http://www.paper51.com

<path>d</path> copyright paper51.com

</item>

http://www.paper51.com

<item> http://www.paper51.com

<name>xx</name> copyright paper51.com

<catalogs>7</catalogs>

内容来自论文无忧网 www.paper51.com

<path>xx</path>

内容来自论文无忧网 www.paper51.com

</item>

http://www.paper51.com

</DATA>

内容来自www.paper51.com

以上是一段程序中用到的XML文档结构。注意到整个文档以<DATA>开始,以</DATA>结尾,表示之间的都是存储的数据(实际上就是资源的属性数据)。中间共有两个item,而每个item又各有几个属性(如<name>,<catalogs>等)。所以可以用一颗树来表示:

内容来自www.paper51.com

图2 Xml树型结构图 paper51.com

注意到上面的树中有些节点只有Name没有Value,而有些却都有。虽然它们都是节点,但类型上还是有区别的。故,采用三个类表达这种信息:XmlNode,XmlLeaf,XmlContainer。 http://www.paper51.com

首先定义一个接口类XmlNode,该类表达抽象的XML节点。然后使用XmlLeaf类和XmlContainer类来实现XmlNode,XmlLeaf表示叶节点(有Name和Value双重属性的节点,但自己没有子节点),XmlContainer表示容器节点(只有Name属性的节点,而且自己可以有子节点)。  paper51.com

------分隔线----------------------------
联系方式