XML-разбор с постоянным использованием памяти - PullRequest
5 голосов
/ 16 апреля 2011

Я пытаюсь найти анализатор xml с поддержкой xpath, который использует небольшой объем памяти или, скорее, постоянный объем памяти, я пытаюсь проанализировать большие XML-файлы, например, почти 1 Гига, я читал о xqilla, и это кажется, что он использует очень большой объем памяти, потому что он основан на DOM, поправьте меня, если я не прав .. В любом случае, есть идея для такого xml-парсера для C ++ и Linux?

Ответы [ 3 ]

1 голос
/ 16 апреля 2011

Если вы можете обработать XML по существу за один проход, парсер SAX был бы хорошей идеей. Как насчет Apache Xerces C ++ ?

0 голосов
/ 17 апреля 2011

Saxon-EE поддерживает потоковую передачу больших XML-документов с использованием XSLT или XQuery (потоковая передача лучше поддерживается в XSLT, чем в XQuery).Подробности на http://www.saxonica.com/documentation/sourcedocs/streaming.xml

0 голосов
/ 16 апреля 2011

Вы можете посмотреть на

pugixml обеспечивает очень быструю, удобную и экономичную обработку документов XML. Однако, поскольку pugixml имеет анализатор DOM, он не может обрабатывать документы XML, которые не помещаются в памяти; Парсер также не проверяет, поэтому, если вам нужна проверка DTD / Schema, библиотека не для вас

Однако это явно не потоковый парсер. Я знаю, что потоковая передача и xpath обычно не очень хорошо сочетаются (из-за потенциальных требований произвольного доступа). Несмотря на это, в .NET когда-либо известный XPathReader , казалось, преодолел разрыв для популярного подмножества XPath:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...