xml算法流程设计

xml算法流程设计

ID:27544922

大小:106.50 KB

页数:5页

时间:2018-12-03

xml算法流程设计_第1页
xml算法流程设计_第2页
xml算法流程设计_第3页
xml算法流程设计_第4页
xml算法流程设计_第5页
资源描述:

《xml算法流程设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、1xml文本解析成xml节点链表的详细逻辑流程文档2写代码实现对一段xml文本的解析设计0的:实现一个读取xml文件的信息存入数据结构以及如何将结构体中的数据还原成一个xml文件的这样一个解析器。设计题目:xml解析器算法的出栈基木思路:如果该元素是一个空元素,则形如〈elementtype=”name”/〉,只要找到了”/〉”就可以将加入栈顶点的元素提取出来;还有一种情况是非空元素,则形如〈nametype=”name”>如果找到的是“〈/”,就将其后面的标签名与刚压栈的节点标签匹配,如果匹配成功,那么栈

2、顶节点就可以出栈了。基于这个原理就可以很好的区分它们之间的层次关系了。算法的详细流程:1.首先准备一个xml文件,然后将xml文件载入内存(可以定义一个buf用文件读写的方式将xml的完整内容存入到这个buf当中,当然该buf不能太小,否则会溢出),这时xml文件的内容已经全部读取到buf中了,这吋只需要对该buf进行操作。//这个过程可以用open函数来打开文件,通过read函数将xml文件里而的内容全部读取到buf中,在buf最后面加’’表示字符串结束2.判断文件是否结束(可以根据’’来判断是否结束),如果结

3、束,再判断栈是否为空(为空正常结束,不为空就异常结束)//通过一个char类型的指针来接收这块buf,如char*str=buf;3.如果buf没有到最末位置,接着就判断有效字符是否是’〈’(如果不是的话,程序就直接异常结束,因为xml第一个字符必须是’〈’,这就是所谓的有效字符,不满足该条件就不符合xml文档的格式要求)4.如果该字符是有效字符’<’,继续向后执行5.判断标志类型1.如果标志类型是版本标志”

4、,就异常结束(因为这不是一个语法正确地xml文档)2.如果标志类型是节点标志”’(这个应该是一个空元素的表示方法),顶点出栈)(出栈的原因是该元素己经被完全解析出来了,顶点中的内容就是

5、所需要的内容,应该出栈了)5.如果没有找到结束标志”/〉”,接着判断是否有节点值,如果有节点值的话,就提取该节点值,然后跳到第2步继续重复上面的操作,直到解析完该buf为止。如果没有节点值也跳到第2步继续执行。6.如果结束标志是”〈/”,就取结束标签名,判断该标签名与栈顶节点是否匹配(如果匹配成功,顶点出栈,如果没有匹配成功,则跳到第4步继续执行)while(*str){if(*str二’〈’){//判断是否是冇效字符if(*(str+l)==’/’){//判断是不是结束标志//取结束标签名,并将其保存到所定义的name

6、数组中charname[50]={0};sscanf(str,%*[

7、数组中//将考到a中的内容复制到xmlNode结构体中strcpy(xmlNode->m_element,a);push(xmlNode);//将该节点压入拽中//将str指针的位置向后移动strlen(a)+2个字节,继续向下走str=str+strlen(a)+l;//加1而不是加2while(*str!=’〉’){if(*str二’’){//判断是否有属性???//取属性名和值???str++;//将读取到的属性名和值保存在xmlNode结构体的sscanf(str,’’%[/〉]’’,xmlNode-〉m_att

8、ributes);//将str向后移动strlen(xmlNodc->m_attributcs)str=str+strlen(xmlNode-〉m_attributes);}}if(*str二’){//表示节点没冇属性str—;//这步很关键if(strncmp(str,”/〉”,2)==0){//结束标志popO7

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。