Похоже, вы должны иметь возможность кэшировать только стек текущих элементов ... Я сомневаюсь, что ваш XML-файл имеет достаточно глубокое вложение для , чтобы стал проблемой. Каждый раз, когда вы читаете начало элемента, поместите его в стек. Каждый раз, когда вы читаете конец элемента, выталкивайте его из стека.
Вы на самом деле не сказали нам, какая информация вам нужна от узлов-предков, но если вам только нужны узлы-предки - а не братья и сестры и т. Д. - это должно работать достаточно легко.
Будьте осторожны с самозакрывающимися элементами, такими как <foo attr="value" />
- вам нужно поместить их в стек, выполнить любую необходимую обработку, а затем вставить их снова, даже если вы не увидите отдельное событие «конечный элемент».