Решение, предложенное @Wing C. Chen, более чем прилично, но в вашем случае я бы не использовал стек.
Вариант использования стека при разборе XML
Обычный вариант использования стека и XML, например, заключается в проверке сбалансированности тегов XML при использовании вашего собственного лексера (то есть парсера XML, созданного вручную с допустимой ошибкой).
Конкретным примером этого будет построение схемы документа XML для Eclipse IDE.
Когда использовать SAX, парсеры Pull и т.п.
Однако использование SAX для анализа сложных документов может стать утомительным, особенно если вы хотите применить операции к узлам на основе некоторых условий.
Когда использовать DOM, например APis
Вы хотите легкий доступ к узлам
Вы хотите перемещаться вперед и назад в документе в любое время
Скорость не является основным требованием против времени разработки / читаемости / обслуживания
Моя рекомендация
Если у вас нет огромного XML, используйте DOM-подобный API и выберите узлы с помощью XPath.
Я лично предпочитаю Dom4J, но я не против других APis, таких как JDom или даже Xpp3, которые поддерживают XPath.