您的位置:首页 > 其它

采用Expat检查XML文档是否格式良好

2007-08-11 11:58 465 查看
  
[align=center]采用Expat检查XML文档是否格式良好[/align]
[align=center][/align]
[align=center]胡家辉/雨水 2007-08-11[/align]
 
这里简单介绍一下如何用Expat解析器来检查XML文档是否格式良好。Expat是一个用纯C语言写的XML解析器。具有XML解析器一般的功能,可以检查XML格式是否良好(well-formed),但不支持schema校验。
为了简便,这里就直接将要检查的XML文档放入缓存中。如需要可以从文件读取或者来自其他地方。
编写自己的Expat应用程序前,需要先通过源代码构建出libexpat.lib和libexpat.dll这两个文件(windows环境)。然后在应用程序中加入对该库的链接。
下面的程序具有检查xml文档是否格式良好的功能,如果检查到格式非良好,程序会准确报告出错的位置(行号和列号)以及错误信息。
 
[align=left]#include<stdio.h>[/align]
[align=left]#include<string.h>[/align]
[align=left]#include<expat.h>[/align]
[align=left] [/align]
[align=left]#pragma comment(lib, "libexpat.lib") [/align]
[align=left] [/align]
[align=left]#define BUFFSIZE        8192[/align]
[align=left] [/align]
[align=left]charBuff[BUFFSIZE] = "<book><name>XML Tutorial</name><price>27</price></book>";[/align]
[align=left] [/align]
[align=left]int main()[/align]
[align=left]{[/align]
[align=left]       int done = 0;[/align]
[align=left] [/align]
[align=left]       XML_Parserparser = XML_ParserCreate(NULL);[/align]
[align=left]       if (NULL == parser)[/align]
[align=left]       {[/align]
[align=left]              printf("Couldn't allocate memory for parser/n");[/align]
[align=left] [/align]
[align=left]              return -1;[/align]
[align=left]       }[/align]
[align=left] [/align]
[align=left]       if (XML_Parse(parser, Buff, strlen(Buff), done) == XML_STATUS_ERROR) {[/align]
[align=left]              printf("Parse error at line %d, Column %d, /n%s/n",[/align]
[align=left]                     XML_GetCurrentLineNumber(parser),[/align]
[align=left]                     XML_GetCurrentColumnNumber(parser),[/align]
[align=left]                     XML_ErrorString(XML_GetErrorCode(parser)));[/align]
[align=left]              [/align]
[align=left]              return -1;[/align]
[align=left]    }[/align]
[align=left] [/align]
[align=left]       return 0;[/align]
}
 
    代码非常简单,这里不多作解释。可以故意将Buff中的xml数据改为格式非良好来查看程序的反应。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息