stream - 如何使用libxml2解析来自GInputStream(GLibGIO/GVFS)的数据?

标签 stream gtk libxml2 glib gio

在 GTK 应用程序中,我使用来自 libxml2 的 xmlParseFile()。但是,该函数只能读取本地文件。我怎样才能让它使用 GIO 框架,以便它也可以读取远程文件?

最简单的方法可能是使用类似g_file_load_contents() 的方法将整个文件读入内存,然后调用xmlParseMemory() 对其进行解析。但是,我正在寻找一种理想地流式传输数据的“更好”的解决方案(以避免将整个数据保留在内存中);可能通过将 GInputStream 连接到 libxml2?

欢迎使用代码示例。我想这是一个常见的用例,因此在此处收集一份详尽的良好实现列表可能会有用。

最佳答案

在 libxml2 网站上有关于如何从文件中逐 block 解析 XML 数据的说明(带有代码示例):http://xmlsoft.org/library.html#Invoking1

如果您想使用 GInputStream,那么您可以使用 g_input_stream_read() 以与libxml2 文档中的示例程序。

关于stream - 如何使用libxml2解析来自GInputStream(GLibGIO/GVFS)的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6473917/

相关文章:

stream - 从Dart中的元素清除流订阅

java - 为什么循环会覆盖初始代码,而不是创建新的 XSSFSheet?

c++ - Linux/C++/Gtk 的报告库?

python - 在 linux 任务栏中创建一个 python 小程序

xml - 我的 Cmake libxml2 项目出了什么问题?

xml - 我如何摆脱 Perl 的 XML::LibXML 模块中 findnodes 返回的不需要的节点?

java - 将对列表转换为分组对列表

javascript - 高地在完全消耗之前添加到流中?

linux - Linux 服务器上的 Haxe 应用程序和 Gtk-WARNING

ios - 带有 libxml 的 Swift 框架