2007-08-10
用expat 库解析XML的学习例子
关键字: D语言 XML expat
用bcdgen转换的头文件。
对xml不大感兴趣。只是尝试用D语言改写,证明它还是能正确处理xml的。
和C程序差不多。真不爽。
对xml不大感兴趣。只是尝试用D语言改写,证明它还是能正确处理xml的。
和C程序差不多。真不爽。
/**
* expat 中的例子改写成D语言
* Edit By Liu Dehong @ 2007/08/10
* version: 1.0
*/
import std.stdio;
import std.stream;
import bcd.expat.xmlparse;
extern(C)
void startElement(void* userData, XML_Char* name, XML_Char** atts)
{
int i;
int *depthPtr = cast(int *) userData;
for (i = 0; i < *depthPtr; i++)
putchar('\t');
printf("%.*s\n", name);
*depthPtr += 1;
}
extern(C)
void endElement(void *userData, XML_Char *name)
{
int *depthPtr = cast(int*) userData;
*depthPtr -= 1;
}
int main()
{
int done;
int depth = 0;
XML_Parser parser;
string fn = "a.xml";
File f = new File(fn);
parser = XML_ParserCreate(null);
XML_SetUserData(parser, &depth);
XML_SetElementHandler(parser, cast(XML_StartElementHandler)
&startElement, cast(XML_EndElementHandler) &endElement);
while (!f.eof())
{
string line = f.readLine();
//writefln(line, line.length);
if (!XML_Parse(parser, cast(char*) line, line.length, done))
{
fprintf(stderr,
"%s at line %d\n",
XML_ErrorString(XML_GetErrorCode(parser)),
XML_GetCurrentLineNumber(parser));
return 1;
}
}
XML_ParserFree(parser);
return 0;
}
发表评论
- 浏览: 14945 次
- 性别:

- 来自: 北京

- 详细资料
搜索本博客
最新评论
-
Dmd编译器学习笔记
我看了 一些D语言的一些介绍,对于的产生还是有的疑惑.
-- by zhangtianfeng -
Dmd编译器学习笔记
.so文件是用-L来指定的,比如gcc的-levent是用来链接libevent ...
-- by qiezi -
Ddoc文档注释学习笔记
...
-- by tomqyp -
Ddoc文档注释学习笔记
转换成其他语言?是说用汉字吗?
-- by sofire -
Ddoc文档注释学习笔记
Good work. 不知道上面的定义的节名能不能自动转换成其他语言,我估计很 ...
-- by Colorful






评论排行榜