1

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

4

1 回答 1

4

SAX 代表XML 的简单 API

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

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

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

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

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

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

于 2009-01-24T02:10:35.297 回答