Кто пользуется этой штукой в Java для рядовых задач, объясните, зачем так сложно? т.е. даже не сложно, а низкоуровнево? неужели никак не абстрагироваться от ручного разбора токенов? да, и вообще, вам не кажется что это коряво - раскидывать логику чтения одного элементы в две функции, для открывающего и закрывающего тега, к примеру?
По поводу уровня абстрагции, ну терпимо, мне кажется, когда можно или обрабатывать уже распарсенные элементы или писать запросы по xml(как к примеру в XmlDocument для .Net), ну уж точно не трогать руками отдельно токен начала, токен конца и подсчитывать вложенность.
ну и чтобы вопрос не казался риторическим, может подскажете более удобную штуку для использования в Java?