采用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数据改为格式非良好来查看程序的反应。
相关文章推荐
- 采用Expat检查XML文档是否格式良好
- 掌握XML系列(四)---创建格式良好的XML文档
- 创建格式良好的XML文档(上篇)
- 格式良好的XML文档( well formed)
- 格式良好的XML文档 (well formed XML)
- 创建格式良好的XML文档(下篇)
- xml约束模式的作用。简述什么是格式良好但无效的xml文档,什么是有效的
- 掌握XML系列(2)--创建格式良好的XML文档
- 掌握XML系列(三)---创建格式良好的饿XML文档 续编
- 为什么XML文档的格式是否规范如此重要呢?为何W3C规定XML处理器不应尝试修复不规范的文档
- XML文档的分类---2.1.2: 格式良好但无效的XML文档
- 掌握XML系列(三)---创建格式良好的饿XML文档 续编
- 掌握XML系列(四)---创建格式良好的XML文档
- 掌握XML系列(二)--创建格式良好的XML文档
- Java 语言的 XML 验证 API-检查文档是否符合模式
- [转]Java 语言的 XML 验证 API---检查文档是否符合模式
- 检查xml写的格式是否正确的方法
- 读取一个格式良好的XML文档(只能包含标记和内容),并按层次编号并输出。
- 【笔记】AS3.0实例化XML时“#1088 文档中根元素后面的标记格式必须正确”的处理
- 解析并打印Excel格式xml文档数据