如何在流到达时从流中读取数据

Xerces C++: how do I read data from a stream as it arrives?

本文关键字:读取 数据      更新时间:2023-10-16

我需要从我自己的流中读取数据,并在数据到达时使用Xerces/c++ (SAX或SAX2)进行解析。我看过Xerces的Java FAQ,但是Java和c++ api似乎并不匹配;至少,我在c++ API中看不到DefaultReaderFactory类。那么,从c++ API支持的流中读取非缓冲数据吗?如果是,我将非常感谢一个代码示例或建议如何移植Java方法到c++。

我认为你想使用SAXParser::parseFirst(InputSource, token)parseNext(token),无论是MemBufInputSource,如果你有数据铺设在内存的某个地方,可以指向它,或通过实现自己的InputSource。

您应该看看http://xerces.apache.org/xerces-c/program-sax2-2.html

基本上你可以创建一个SAX2XMLReader的实例,然后你可以使用它的3个parse成员函数之一来解析你正在使用的流源。使用MemBufInputSource可能适合大多数情况。