欢迎大家光临【无师自通-教程网】您的到来是我们的荣幸。本站提供photoshop教程,ps教程,flash教程,cad教程,网页制作教程,excel教程,asp教程,vb教程,3d教程,c语言教程,html教程,coreldraw教程,dreamweaver教程,java教程,3dmax教程 等各种教程为主题的内容和服务,相信您会在这里找到您所需要的东东。无师自通伴您一生-谢谢您的光临!!
网站地图 设为首页
简繁切换 加入收藏
栏目待定 留言本站
您现在的位置: 无师自通-教程网 >> WEB开发 >> XML教程 >> XML应用技巧 >> 教程正文

  没有公告

教程: XML教程-应用技巧-XML解析自动机 更多...
教程: XML教程-应用技巧-XML解析自动机
编程手记之ANSI C篇-(四)XML解析自动机
在实现了通用连接件、哈希表和二叉分析树后,我可以用这些功能做一个XML分析工具了。XML以其标准的结构,严谨的文法,强大的描述能力,以及独立和开放性,在描述数据资源方面得到了广泛的应用。在各种语言中,XML文档(DOM)的分析工具已层出不穷,在此,从文法的角度,来完成一个XML分析自动机的C实现。
1、XML基本文法:
/*XML脚本有XML的声明和一个根结点构成*/
XMLScripts --> XMLNote XMLEntity
/*XML声明由XML标识首部、零个或多个XML属性节组成,之间空格符隔开,最后是XML标识尾部*/
XMLNote --> '<?xml' { BLANK XMLAttr} '?>'
/*XML节点由节点首部、节点文本、零个或多个子节点和节点尾部组成,没有文本、自节点的节点称为空节点*/
XMLEntity --> TagHead [ TagText {XMLEntity} TagTail ]
/*节点首部由节点开始符、节点名称、零个或多个属性节组成,没有文本和子节点的节点可由终止符后缀*/
TagHead --> '<' TagName {BLANK XMLAttr} [ '/>' | '' ]
/*节点文本由字符串组成*/
TagText --> {'a | b c| ...0 | 1 | ..'}
/*节点尾部由节点终止符和节点名称组成*/
TagTail --> '</' TagName '>'
/*节点名称由字符串组成*/
TagName --> {'a | b c| ...0 | 1 | ..'}
/*属性节属性名称、赋值符、首尾扩号和属性值组成*/
XMLAttr --> AttrName '=' '"' AttrValue '"'
/*属性名称由字符串组成*/
AttrName --> {'a | b c| ...0 | 1 | ..'}
/*属性值由字符串组成*/
AttrValue --> {'a | b c| ...0 | 1 | ..'}
/*空格符由下列符号组成*/
BLANK --> {' ' | '\t' | '\r' | '\n'}

2、XML解析自动机的定义:
/*定义自动机返回状态码*/
#define XP_SUCCESS 0
#define XP_CONTINUE 1
#define XP_ERROR -1

/*定义自动机当前的操作码*/
typedef enum{paChild = 0,paSibling = 1,paAttr = 2}XMLParseAction;

/*自动机器的数据结构*/
typedef struct tagXMLMac{
LINKPTR tree; /*二叉树用以维系节点关系和存储节点属性*/
LINKPTR parent; /*指向当前分析的父节点的,用于回溯*/
XMLParseAction act; /*当前自动机操作码*/
int retcode; /*自动机状态码*/
TCHAR* token; /*当前分析位置的字符串指针*/
}XMLMac;

/*定义一些节点的固有属性*/
#define NODENAME _T("NodeName")
#define NODETEXT _T("NodeText")
#define NODETYPE _T("NodeType")

[1] [2] [3] [4] [5] [6] 下一页

教程录入:admin    责任编辑:admin 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     
     
     
     

    asp连接mysql数据库

    asp连接mysql数据库-2

    frontpage2000教程---制作主页
    免责声明!本站资料大部分来自于互联网,其版权归原作者或其他合法者所有.如内容涉及或侵犯了您的权益,请通知本人,我将尽快处理!.欢迎您的光临。
    辽ICP备07003958号
    无师自通,伴你一生-教程网