в некоторой степени относится к: libxml2 из Java
да, этот вопрос довольно запутанный - извините.Я держался настолько плотно, насколько мне казалось возможным.Я выделил вопросы, чтобы было легче взглянуть на них перед прочтением всего.
Почему синтаксический анализ быстрее, чем dom-анализ? Единственное, что я могу придумать, это то, чтоСаксофон, вы, вероятно, игнорируете большинство поступающих данных и, следовательно, не тратите время на обработку тех частей XML, которые вам не нужны.IOW - после разбора w / SAX вы не можете восстановить исходный ввод. Если бы вы написали свой синтаксический анализатор SAX так, чтобы он учитывал каждый узел xml (и, таким образом, мог воссоздать оригинал), то он не был бы быстрее, чем DOM, не так ли?
Причина, по которой я спрашиваю, состоит в том, что я пытаюсь разобрать документы XML быстрее.Мне нужно иметь доступ ко всему XML-дереву ПОСЛЕ разбора.Я пишу платформу для подключаемых сторонних сервисов, поэтому не могу предвидеть, какие части XML-документа понадобятся, а какие - нет.Я даже не знаю структуру входящего документа.Вот почему я не могу использовать jaxb или sax.Объем памяти не проблема для меня, потому что XML-документы маленькие, и мне нужно только 1 в памяти за раз.Это время, которое требуется для анализа этого относительно небольшого XML-документа, который убивает меня.Я раньше не использовал stax, но, возможно, мне нужно продолжить расследование, потому что это может быть золотая середина? Если я правильно понимаю, stax сохраняет исходную структуру xml и обрабатывает части, которые я запрашиваю по требованию? Таким образом, исходное время разбора может быть быстрым, но каждый раз, когда я прошу его пересечь частьдерево, которое еще не было пройдено, тогда происходит обработка?
Если вы предоставите ссылку, которая отвечает на большинство вопросов, я приму ваш ответ (вам не нужно напрямую отвечать на мои вопросыесли они уже где-то ответили).
обновление: я переписал его на sax, и он анализирует документы в среднем за 2.1 мс.Это улучшение (на 16% быстрее) по сравнению с 2,5 мс, которые принимал Дом, однако это не та величина, которую я (и другие) предположил бы
Спасибо