如何使用 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) 的数据?的主要内容,如果未能解决你的问题,请参考以下文章