Хорошо разбирать XML - задача не из легких.
Его основная структура - это дерево с любым узлом в дереве, способным содержать контейнер, состоящий из множества деревьев.
Каждый узел в дереве содержит тег и значение, но в дополнение может содержать произвольное количество именованных атрибутов и произвольное число дочерних элементов или контейнеров.
Задачи синтаксического анализа XML обычно делятся на три категории.
Вещи, которые можно сделать с помощью "регулярных выражений". Например. Вы хотите найти значение первого тега «MailTo» и не интересуетесь содержимым других тегов.
Вещи, которые вы можете разобрать сами. Структура xml всегда очень проста, например, корневой узел и десять хорошо известных тегов с простыми значениями.
Все остальное! Несмотря на то, что формат сообщения xml может выглядеть обманчиво простым, домашние парсеры легко спутать с дополнительными атрибутами, CDATA и неожиданными потомками. Полноценные парсеры XML могут справиться со всеми этими ситуациями. Здесь основной выбор между потоком или парсером DOM. Если вы намереваетесь использовать большинство сущностей / атрибутов, указанных в том порядке, в котором вы хотите их использовать, то DOM-парсер идеально подходит. Если вас интересуют только несколько атрибутов и вы собираетесь использовать их в том порядке, в котором они представлены, если у вас есть ограничения по производительности или если xml-файлы имеют большой размер (> 500 МБ), лучше использовать потоковый анализатор; Механизм обратного вызова требует немного «грохота», но на самом деле его довольно просто программировать, когда вы освоите его.