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

Posted

技术标签:

【中文标题】如何使用 libxml2 解析来自 GInputStream (GLibGIO/GVFS) 的数据?【英文标题】:how to use libxml2 to parse data from GInputStream (GLibGIO/GVFS)? 【发布时间】:2011-09-22 08:49:45 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于如何使用 libxml2 解析来自 GInputStream (GLibGIO/GVFS) 的数据?的主要内容,如果未能解决你的问题,请参考以下文章

linux下使用libxml2实现对xml文件的读取及查询

在 iOS 中使用 libxml2 解析 (X)Html 的示例

使用libxml2解析xml

装php中,无法安装libxml2,怎么解

libxml2.2.dylib 造成大量内存泄漏

采用libxml2解析xml资源