Вам не нужно хранить все дерево XML в памяти для его проверки. Только те части, которые проверены на данный момент, должны быть в памяти. Например, если вам нужно подтвердить структуру, подобную этому корню / потомку * / свойству *, тогда на самом деле нужно проверять только отношения потомок-родитель, и поэтому нам нужно хранить только предыдущий элемент для проверки этого. Конечно, если структура сложнее, чем больше памяти будет использовано для проверки сложных ограничений.