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

时间:2011-06-24 21:24:48

标签: stream gtk libxml2 glib gio

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

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

代码示例欢迎。我猜这是一个常见的用例,所以在这里收集一份详尽的良好实现列表可能会有用。

1 个答案:

答案 0 :(得分:1)

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

如果您想使用GInputStream,则可以使用g_input_stream_read()以与libxml2文档中的示例程序相同的方式将块提供给xmlParseChunk()