65.9K
CodeProject 正在变化。 阅读更多。
Home

一个简单的基于 STL 的 XML 解析器

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.21/5 (19投票s)

2000年5月17日

viewsIcon

279272

downloadIcon

4651

这是一个纯粹基于 STL 的小型非验证 XML 解析器。

  • 下载源文件 - 10 Kb
  • 这是一个基于纯 STL 的小型 XML 解析器。 主要有两个类:XmlStreamXmlParser。 XmlParser.h 包含大部分解析代码。 它有几个状态变量,可以分为两类:

    1. 缓冲区状态 - 显示我们正在从哪里解析
    2. 解析状态 - 显示我们发现了什么
    XmlParser 大量使用偏移量来跟踪其状态。 这是有意为之。 为了最大限度地提高速度,它不执行任何字符串复制。

    要开始解析,请声明一个 XmlStream 类的实例,并设置要解析的缓冲区。 Parser.cpp 中包含一个示例。 调用 XmlStream 中的 parse,传递指向缓冲区的指针和缓冲区长度。 您将看到屏幕输出,显示找到的内容。 这只是简单的调试输出,可以关闭。

    XmlNotify 用作接口类,以通知订阅者找到的节点和元素。 XmlStream 类中有一个指向订阅者的指针。 可以使用 setSubscriber 设置订阅者。

    请注意,不包含 XML 文档声明,也不包含模式。 如果这些存在于您的缓冲区中,请不要将它们发送到解析器。 稍后,将添加代码来逐步处理这些内容,从而实现删除它们的功能。 因此,这是一个非验证解析器。 解析器中有一个错误。 当遇到空节点时,它将被报告为元素,稍后将修复此问题。 示例代码中包含此问题的示例。

    如果您有任何建议或改进意见,请告诉我。

    © . All rights reserved.