#c #libxml2
#c #libxml2
Вопрос:
Я пытаюсь объединить несколько файлов с помощью libxml2 SAX. Исходные файлы выглядят следующим образом:
<xml>
<section1>
<data />
<data />
</section1>
<section2>
<data />
<data />
</section2>
<section3>
<data />
<data />
</section3>
</xml>
Что я хочу сделать, так это сделать так, чтобы данные из одних и тех же разделов в разных файлах были помещены в один большой файл в соответствующем разделе. Что я сделал, так это прочитал первый файл section1 и сразу записал в объединенный файл section1. Затем я делаю то же самое с другими файлами, которые я делаю. После этого я перехожу к разделу 2.
Это работает нормально, за исключением того, что я должен читать все файлы столько раз, сколько у меня есть разделов. Что мне было интересно, так это могу ли я приостановить чтение file1 после прохождения раздела 1 и продолжить его, как только раздел 1 был прочитан во всех других файлах.
Ответ №1:
Я не думаю, что это было бы возможно. Вы можете запустить вторичный синтаксический анализ в произвольное время при обратном вызове исходного файла, но я не думаю, что вы можете остановить вторичный синтаксический анализ (чтобы вернуться к исходному синтаксическому анализу) без полного завершения или прерывания 2-го.
Я бы настоятельно рекомендовал ознакомиться с xmlReader
интерфейсом. Он не управляется обратными вызовами, вы звоните xmlTextReaderRead
несколько раз, чтобы продвинуть его, и в любой момент вы можете переключаться между читателями. Вы определенно сможете добиться того поведения, которое ищете.
Примеры доступны по адресу http://xmlsoft.org/examples/index.html#xmlReader