用bcdgen转换的头文件。
对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;
}
分享到:
相关推荐
另外,上述示例中还提到了一些在线XML/JSON互相转换工具,这类工具可以帮助开发者更便捷地进行数据格式转换工作,但与expat解析XML的具体操作无直接关联。 通过上述示例,我们可以了解到如何使用expat库在PHP中解析...
在C语言中解析XML,我们通常会使用如TinyXML、libXML2或expat这样的库。这些库提供了API来读取、遍历和解析XML文档。这里以TinyXML为例,讲解一个简单的解析过程: 1. **安装库**:首先,你需要下载并安装TinyXML库...
- `XmlFile.cpp`:通常包含XML解析器的实现代码,包括读取文件、解析XML结构、提取属性等功能。 - `XmlFile.h`:头文件,可能包含了类定义和相关的函数声明,供其他源文件引用以调用XML解析功能。 6. **扩展性**...
2. **Expat**:Expat是一个C编写的XML解析库,它使用SAX模型。通过注册回调函数,当解析器遇到XML元素时,会调用相应的回调函数。Expat提供了一种低级但高效的接口,适合处理大量XML数据。 四、C解析XML的基本步骤 ...
本文将深入探讨如何使用Perl来解析XML文件,特别是通过XMLParser和Expat库。 首先,XMLParser是Perl中的一个模块,它提供了基于James Clark的Expat库的非回溯事件驱动的XML解析器。Expat是一个高效的C库,用于解析...
Expat 是一个开源库,主要用于解析XML(可扩展标记语言)文档。它的全名是 "External Entity Processor and Parser",由 James Clark 开发,并在1998年首次发布。这个库是用C语言编写的,因此可以在多种操作系统上...
- 许多编程语言的 XML 库都使用 Expat 作为其底层解析引擎,例如 Python 的 `xml.etree.ElementTree`。 6. **版本 2.0.1**: - 这个版本可能包含了 bug 修复、性能优化或其他功能增强,具体变化需要查看 release ...
以下是一个简单的例子,展示如何使用PHP的Expat解析器处理XML文件: 首先,需要创建一个XML解析器实例,然后定义不同的事件处理器函数。这些函数会在XML文件的特定事件发生时被调用。例如,start函数会在开始元素...
Expat是一个非验证解析器,不处理文档类型定义(DTD),如果XML文档格式不正确,解析过程将以错误结束。因为它是事件驱动且不验证,所以Expat具有高效、适合Web应用程序的优点。然而,它的缺点是不适合需要动态调整...
使用PHP的expat解析器的基本步骤包括: 1. 创建XML解析器实例。 2. 定义处理XML事件的回调函数。 3. 打开XML文件并读取数据,解析XML文档。 4. 关闭文件并释放XML解析器资源。 例如,以下是一个简单的PHP处理XML...
可是一大堆的概念和术语往往让人望而生畏,很多朋友问我:XML到底有什么用,我们是否需要学习它?我想就我个人学习过程的心得和经验,写一篇比较全面的介绍文章。首先有两点是需要肯定的: 第一:XML肯定是未来的...
Python文件: 复制代码 代码如下:#parsexml.py #本例子参考自python联机文档,做了适当改动和添加 import xml.parsers.expat #控制打印缩进 level = 0 #获取某节点名称及属性值集合 def start_element(name, attrs):...
- 详细解释了如何使用Expat库解析XML文件。 63. **使用LLXmlTree类来分析XML配置文件** - 介绍了如何利用`LLXmlTree`类来分析和管理XML配置文件。 64. **LLXmlTreeParser类生成XML树** - 详细分析了`...
- xmllib模块:用于解析XML文件。 - xml.parsers.expat模块:提供对Expat XML解析器的接口。 - sgmllib、htmllib、htmlentitydefs模块:分别用于解析SGML、HTML和HTML实体。 - ConfigParser模块:用于解析配置...
- expat模块:一个XML解析库的接口。 - sgmllib模块:SGML解析器。 - htmllib和formatter模块:HTML文档处理。 第6章关于邮件和新闻消息处理,其中包括: - rfc822模块:用于处理符合RFC 822标准的消息头。 - mime...
##### 3.1 解析Log4C配置文件——依赖expat解析器 Log4C使用expat作为XML解析器来处理配置文件。因此,在构建Log4C之前,需要先安装expat库。这通常可以通过包管理器完成,例如在Linux上使用`apt-get install ...
Log4C 使用 expat 库来解析 XML 格式的配置文件。因此,在编译 Log4C 前需要确保已经安装了 expat。 - **安装 expat**:可以通过包管理器或者从源码编译安装。 - **配置编译选项**:在编译 Log4C 时,需要指定 expat...
- 使用Expat XML解析器解析XML文档。 - 类如`xml.parsers.expat.ParserCreate()`。 - **sgmllib模块**(已废弃) - 提供解析SGML文档的基本框架。 - 类如`sgmllib.SGMLParser`。 - **htmllib模块**(已废弃) -...