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