Як вивести файл xml деревом в консоль з рекурсією

Якщо вам не потрібно специфічний для класу XmlDocument функціонал, то простіше скористатися XDocument з простору імен System.Xml.Linq. Це дозволить отримати більш компактний код.

Для виведення на консоль в тому вигляді, який ви вказали є три шляхи.

1. Рекурсивний обхід дерева XML

Реалізується досить просто:

Але вставити в цей вод виборчу нумерацію конкретних елементів без "милиць" не вийде. "Милиця" для нумерації може виглядати так:

При цьому будуть пронумеровані всі елементи крім тих, які не містять в собі інших елементів.

2. Фіксований обхід дерева XML

З точки зору дерева, рекурсія зберігається, така вже структура дерева, але якщо ця структура фіксована і відома. то можна обійтися без рекурсивного виклику методів а використовувати ланцюжок викликів в циклі. Покажу на прикладі:

як бачите, рекурсія відсутня, але якщо структура XML буде відрізнятися від закладеної в коді, "все перетвориться на гарбуз" і буде давати невірні результати.

Можна виконати всю роботу руками, отримавши вихідний текст XML у вигляді тексту. Для цього можна скористатися будь-яким відомим вам способом отримання тексту з файлу.

Далі до рядка вихідного XML тексту застосовуємо різноманітні регулярні вирази або інші відомі вам способи перетворення рядка до отримання рядки або масиву рядків потрібного виду і виводимо отримане.

Наводити код даного способу не стану, так як варіантів для подібного рішення існує маса, а поглядів на те, як це зробити правильно ще більше. До того ж, я сильно сумніваюся, що подібний варіант буде істотно продуктивніше ніж два попередніх, скоріше навпаки.

Вибирайте якийсь варіант вам більше підходить =)

Схожі статті