【问题标题】:Snippet for SAX parsing a user object in C++?SAX 在 C++ 中解析用户对象的片段?
【发布时间】:2009-01-24 01:56:03
【问题描述】:

任何人都可以分享他们使用 C++ 中的 SAX 解析器解析用户定义对象的代码的 sn-p。

【问题讨论】:

    标签: c++ parsing sax


    【解决方案1】:

    SAX 代表Simple API for XML。

    SAX 仅用于解析 XML 文件。因此,如果您想使用 SAX 从 C++ 解析对象,唯一有意义的方法是先将该对象序列化为 XML。

    您想要使用 SAX XML 解析器的原因是因为您可能有一个非常大的 XML 文件,并且您只想读取它的一部分,这样做会使用更少的 RAM。

    为什么要使用 SAX 解析器的一个很好的例子是,如果您有一个序列化的 std::vector 字符串到 XML 文件中。假设这个向量包含数百万个条目。那么你不能一次将整个 XML 文件读入内存。您将不得不改用 SAX 解析器。

    SAX 解析器有许多不同的实现,但您甚至可以自己创建一个,非常容易绘制finite state machine。当您进入读取完整元素的状态时,您将调用回调函数。

    您还可以使用 LibXML、MSXML、Xerces-C++ XML Parser 以及更多用于 SAX 解析的库。

    回到你原来的问题。您的 SAX 解析器将简单地解析对象的 XML 表示,然后填充对象的成员。或者,如果您的对象是容器,请添加容器的元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-19
      • 2011-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-13
      • 2013-01-22
      • 1970-01-01
      相关资源
      最近更新 更多