Проблема здесь заключается не в чтении дерева XML в память, а в получении узлов между двумя узлами xml. Начальный и конечный узлы документа xml в ooxml являются одиночными, что означает отсутствие дочерних узлов. Они просто утверждают, что есть начало закладки и конец закладки. Для меня было бы больше смысла, если бы все, что заключено в закладке, было бы дочерним узлом узла закладки, а не текущим использованием тегов xml.
Поскольку навигация по xPath не очень хорошо работает с этой концепцией, одну вещь, которую вы можете сделать, - это циклически проходить через каждый узел в xDoc и искать закладки закладки и конечные теги. Добавление всего между двумя в массив или новый xDoc. С этого момента вы можете дополнительно проанализировать узлы, чтобы получить необходимые данные. Надеюсь, что это имеет смысл.