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

如何使用libxml2解析来自GInputStream(GLibGIO/GVFS)的数据?,stream,gtk,libxml2,glib,gio,Stream,Gtk,Libxml2,Glib,Gio,在GTK应用程序中,我使用libxml2中的xmlParseFile()。但是,该函数只能读取本地文件。我如何让它使用GIO框架,以便它也可以读取远程文件 最简单的方法可能是使用g\u file\u load\u contents()将整个文件读入内存,然后调用xmlParseMemory()对其进行解析。然而,我正在寻找一个“更好”的解决方案,理想情况下,它可以流式传输数据(以避免将整个数据保存在内存中);可能通过将GInputStream连接到libxml2 欢迎使用代码示例。我想这是一个常

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

最简单的方法可能是使用
g\u file\u load\u contents()
将整个文件读入内存,然后调用
xmlParseMemory()
对其进行解析。然而,我正在寻找一个“更好”的解决方案,理想情况下,它可以流式传输数据(以避免将整个数据保存在内存中);可能通过将
GInputStream
连接到libxml2

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

libxml2网站上有关于如何从文件中逐块解析XML数据的说明(带有代码示例):

如果您想使用
GInputStream
,那么可以使用
g\u input\u stream\u read()
以与libxml2文档中的示例程序相同的方式向
xmlpassechunk()
提供块关于如何从文件逐块解析XML数据,请访问libxml2网站:

如果您想使用
GInputStream
,那么可以使用
g\u input\u stream\u read()
以与libxml2文档中的示例程序相同的方式将块馈送到
xmlpassechunk()