【问题标题】:Xerces C++: how do I read data from a stream as it arrives?Xerces C++:如何从流中读取数据?
【发布时间】:2014-07-07 11:09:44
【问题描述】:

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

【问题讨论】:

  • 您可能需要检查/更新您的 xerces-c++ 库版本,因为应该实现 XMLReaderFactory::createXMLReader
  • @Drax 谢谢,你是对的——它实际上只是一个未实现的重载。我只是从描述中删除了这句话,因为主要问题仍然存在 - 如何将 Java 示例移植到 C++ API。我相信它已经在下面得到了回答。

标签: c++ xerces xerces-c


【解决方案1】:

我认为您想使用SAXParser::parseFirst(InputSource, token)parseNext(token),如果您将数据放在内存中的某处并且可以指向它,则可以使用MemBufInputSource,或者通过实现您自己的InputSource

【讨论】:

  • 谢谢;看起来像一个解决方案。抱歉,我现在分心于其他任务,我会在完成这项工作后立即更新我的评论。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    • 2016-04-24
    相关资源
    最近更新 更多