Я работаю с потенциально огромными XML-файлами, содержащими сложную информацию о трассировке из моих проектов.Есть ли быстрый XML-парсер в Python, который позволяет мне начинать тег как смещение байта в потоке?
Я хотел бы создать индексы для этих файлов XML, чтобы можно было быстро найти подзаголовки документа XML без необходимости загружать их все в память.
Если я создал индекс «полки», который может содержать информацию, подобную «книги для автора Джо», находятся в смещениях [22322, 35446, 54545], тогда я могу просто открыть XML-файл, как обычный текстовый файл, и искать эти смещения, а затем это было для одного из парсеров DOM, который принимает файл или строки.
Часть, которую я еще не выяснил, заключается в том, как быстро разобрать XML и создать такой индекс.
Так что мне нужен быстрый SAX-анализатор, который позволяет мне найти начальное смещение тегов в файле вместе с событиями начала. Поэтому я могу разобрать подраздел XML вместе с начальной точкой в документе, извлечь информацию о ключах и сохранить ключ и смещать его в указателе полки.
Спасибо. Я получил свой XML-указатель, работающий с этим кодом. Я ожидаю, что ведьма согласится посмотреть, есть ли ответы, которые используют более быстрый парсер. Дайте мне знать, если вы хотите увидеть его для добавления в поваренную книгу. –
@James, ваш Q явно сказал, что вы хотите использовать SAX, поэтому я смущен тем, что теперь вы ищете другие парсеры в рамках одного и того же вопроса (?). Что касается Поваренной книги, спасибо за предложение, но я в настоящее время не поддерживаю будущую редакцию (на самом деле я не знаю, кто ... если кто-то ... помимо онлайн-материалов при активизации, конечно, что на самом деле к которому прибегает кто-нибудь, в частности, и никогда не был). –
, когда я сказал SAX Я просто имел в виду синтаксический анализатор, который не загружает весь документ в память. С быстрым я имел в виду парсер со скоростью, подобной cElementTree.iterparse: http://effbot.org/zone/celementtree.htm. Я работаю с большими документами, поэтому, если я могу индексировать его в 4 раза быстрее, то это того стоит. –