SAX在C ++中解析用户对象的代码片段?

时间:2009-01-24 01:56:03

标签: c++ parsing sax

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

1 个答案:

答案 0 :(得分:4)

SAX代表Simple API for XML

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

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

为什么要使用SAX解析器的一个很好的例子是,如果你有一个scriz ::字符串的std :: vector到XML文件中。假设此向量包含数百万条目。然后,您无法立即将整个XML文件读入内存。您必须使用SAX解析器。

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

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

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