У меня есть огромный XML документ (более 12 ГБ), который мне нужно проанализировать следующим образом ...
С учетом такой структуры:
<person name=Alice>
<colour>blue</colour>
</person>
<person name=Bob>
<colour>green</colour>
</person>
<person name=Charles>
<colour>blue</colour>
</person>
Я хотел бы извлечь в отдельный файл только те элементы person
, которые содержат подполе <colour> blue </colour>
.
Например, с учетом предыдущего кода XML выходные данные программы должны быть отдельным файлом. со следующим содержанием:
<person name=Alice>
<colour>blue</colour>
</person>
<person name=Charles>
<colour>blue</colour>
</person>
Я пытался использовать grep
и sed
, так как они очень полезны для этой цели и также могут управлять огромными файлами, такими как мои, но я не Я уверен, что мне нужно использовать регулярное выражение.
Заранее спасибо!
РЕДАКТИРОВАТЬ : как я уже отметил, мне нужен инструмент на основе потоков, иначе программа просто вылетает! Я пробовал xmlstarlet
, но программа автоматически уничтожается (я полагаю, из-за использования памяти).
EDIT2 : Я также пытался разделить файл с помощью xml_split
, но количество генерируемых подфайлов просто не поддается обработке. Итак, какие-либо предложения?