Как использовать libxml2 для анализа данных из GInputStream (GLibGIO / GVFS)? - PullRequest
1 голос
/ 25 июня 2011

В приложении GTK я использую xmlParseFile() из libxml2. Однако эта функция может читать только локальные файлы. Как я могу вместо этого заставить его использовать инфраструктуру GIO, чтобы он мог также читать удаленные файлы?

Самый простой способ - это использовать что-то вроде g_file_load_contents(), чтобы прочитать весь файл в память, а затем вызвать xmlParseMemory(), чтобы проанализировать это. Тем не менее, я ищу «более приятное» решение, которое в идеале обеспечивает потоковую передачу данных (чтобы не хранить все данные в памяти); возможно, подключив GInputStream к libxml2?

Примеры кода приветствуются. Я предполагаю, что это распространенный вариант использования, поэтому здесь может быть полезен сбор исчерпывающего списка хороших реализаций.

1 Ответ

1 голос
/ 26 июня 2011

На веб-сайте libxml2 есть инструкции (с примерами кода) о том, как анализировать порцию XML-данных по порциям из файла: http://xmlsoft.org/library.html#Invoking1

Если вы хотите использовать GInputStream, тогда вы можете использовать g_input_stream_read() для подачи кусков в xmlParseChunk() таким же образом, как в примере программы в документации libxml2.

...