xlm解析方法设计

XML简介

  • XML是可扩展标记语言标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。
  • 在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
  • 整理一下在校期间做的XML解析方法。

代码下载

代码下载路径:download.csdn.net/download/mrhjlong/10369554

设计功能

  1. 将xml文件中的每一层的数据提取出来并保存到二叉树中;
  2. 遍历二叉树中的数据按xml原格式打印到屏幕;
  3. 将保存在二叉树中的数据按照xml文件格式输出到新的文件中。

存储结构体

存储结构体

xml文件存储流程图

xml文件存储流程图

示例解析过程

每一个结点包含数据域和指针域。数据域为xml每一层每一个结点存储的数据和结点的名字。指针域包含兄弟结点和子节点,兄弟结点指向xml文件中该节点同一层相同等级的下一个结点,子节点指向该节点的子节点。
示例解析过程

遍历存储数据的二叉树

这里写图片描述

还原xml文件

这里写图片描述

函数描述

具体实现见代码。

#ifndef _MXML_H_
#define _MXML_H_

#define MAXSIZE 20

//二叉树结点结构体
typedef struct node
{
    char data[MAXSIZE]; //内容
    char name[MAXSIZE]; //标签名称

    struct node *bro;   //兄弟结点  (左子树)
    struct node *child; //子结点   (右子树)
}Node;

 /*
    *Function   : node_create
    *Description: 新建结点,并将数据域赋值
    *Param in   : data      内容数据首地址
                  name      标签名称首地址
    *Param out  : 无
    *Retrun     : pNode     新建结点的地址
 */
Node *node_create(char *data, char *name);

/*
    *Function   : insert
    *Description: 插入结点到二叉树中
    *Param in   : flag  0:  插入到当前指针所指结点的兄弟结点
                        1:  插入到当前指针所指结点的子结点
                  pNow      当前指针
                  pNode     待插入的结点
    *Param out  : 无
    *Retrun     : 无
 */
void insert(int flag, Node *pNow, Node *pNode);

 /*
    *Function   : node_search
    *Description: 根据标签名称查找结点,打印出数据内容
    *Param in   : tree      二叉树头结点地址
    *Param out  : 无
    *Retrun     : 无
 */
void node_search(Node *tree, char name[]);

/*
    *Function   : tree_print
    *Description: 
    *Param in   : tree      二叉树头结点地址
    *Param out  : 无
    *Retrun     : 无
 */
void tree_print(Node *tree);

/*
    *Function   : tree_print_form
    *Description: 打印(遍历)二叉树存储的信息,格式有缩进输出
    *Param in   : tree      二叉树头结点地址
    *Param out  : 无
    *Retrun     : 无
 */
void tree_print_form(Node *tree);

/*
    *Function   : xml_tree_destroy
    *Description: 销毁二叉树,释放各个结点内存
    *Param in   : pTree     待销毁的二叉树头结点指针的地址
    *Param out  : 无
    *Retrun     : 无
 */
void xml_tree_destroy(Node **pTree);

/*
    *Function   : xml_restore
    *Description: 根据二叉树存储的信息,还原xml文件(数据有缩进)
    *Param in   : tree      二叉树头结点地址
                  fp        待还原的xml文件的地址
    *Param out  : 无
    *Retrun     : 无
 */
void xml_restore(Node *tree, FILE *fp);

/*
    *Function   : xml_tree_create
    *Description: 读取xml文件数据,存储到新建的二叉树中
    *Param in   : fp        待读取的xml文件的地址
    *Param out  : 无
    *Retrun     : pNow      二叉树头结点地址
 */
Node *xml_tree_create(FILE *fp);

#endif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值