Если я вас правильно понимаю, то, похоже, ваша проблема в том, что способ обработки атрибута type
на самом деле зависит от структуры фактического узла; другими словами, способ обработки атрибута type
зависит от того, имеет ли элемент block
родительский элемент 'LevelArray' или сам block
является корневым элементом документа.
В этой ситуации я думаю, что вам нужно реализовать свой собственный простой конечный автомат для обратных вызовов SAX. Другими словами, имейте некоторые переменные, которые отслеживают, какие элементы уже были открыты и закрыты, поскольку анализатор SAX пересекает файл XML. Это было бы очень просто.
Альтернативой является использование парсера DOM, потому что парсер DOM дает вам возможность получать списки дочерних элементов заданных элементов и т. Д. Однако, если ваши требования не очень сложны, я бы остановился на парсере SAX и просто реализовал конечный автомат, как предлагается. Парсер DOM по сравнению с ним тяжелый и более сложный в использовании.