Я создаю сервер C ++ и клиент на Java. Для обмена структурами данных между ними я планировал использовать XML с использованием xerces-c, так как он доступен с обеих сторон. Поскольку у меня есть ОЧЕНЬ элементарное понимание механизмов XML, я пытался найти то, что мне нужно.
Поэтому при получении XML с любой стороны я бы использовал парсер SAX. Однако, если я понял это правильно, то я не смогу использовать это для сериализации объекта в XML, поэтому мне придется использовать DOM, когда я хочу отправить данные, верно?
Теперь я, по крайней мере, немного лучше понимаю разницу между SAX и DOM, поэтому я подумал, что использовать SAX проще, но его нельзя использовать для создания XML, только для его чтения.
Теперь мои вопросы, это хорошая идея, чтобы использовать оба, или я лучше придерживаться DOM в этом случае? Фактическая обработка должна быть довольно простой. Когда объект должен быть передан, он должен скопировать свои данные в XML, который передается. Поэтому мне не нужно делать запросы, кроме как при десериализации.
во-первых, вы можете посмотреть в Apache Swift, которая является идеальной средой для создания сервера C ++ с клиентом Java для обмена структурами данных между этими языками. Вы можете быстро научиться быстро генерировать исходные коды клиента и сервера примерно за 2 часа. Проверьте пример на http://thrift.apache.org/
На твой вопрос. Я думаю, что вы правильно понимаете DOM и SAX.
DOM: Читает весь документ XML одновременно и помещает его в объект (в ОЗУ). Это не работает с очень очень большими документами, которые не помещаются в оперативную память.
SAX: Это считывает XML-документ построчно, а разрабатываемый вами анализатор решает построчно, что делать.
Если у вас есть существующий объект, обычно просто сгенерировать XML из него. Вы можете использовать Simple XML Framework (http://simple.sourceforge.net/) для сериализации и десериализации ваших объектов Java.
Я думаю, что вы должны читать и писать как можно больше с DOM стратегии, потому что это проще и доставит вам меньше хлопот, так как вы обмениваетесь и сериализуете объекты. Используйте SAX, только если у вас есть очень большие файлы (или много очень маленьких файлов одновременно) в оперативной памяти.
Других решений пока нет …