пройти каждый элемент в дереве XML, используя linq to xml - PullRequest
7 голосов
/ 16 ноября 2009

Я хотел бы пройтись по каждому элементу и атрибуту в xml и получить имя как значение, не зная заранее названия элементов. У меня даже есть книга по linq to xml с C #, и она только говорит мне, как запросить значение элементов, когда я уже знаю имя элемента.

Код ниже дает мне только информацию самого высокого уровня. Мне нужно также добраться до всех нисходящих элементов.

            XElement reportElements = null;
            reportElements = XElement.Load(filePathName.ToString());


            foreach (XElement xe in reportElements.Elements())
            {

                MessageBox.Show(xe.ToString());
            }

Ответы [ 2 ]

18 голосов
/ 16 ноября 2009

Elements ходит только на один уровень; Descendants обходит весь DOM для элементов, и затем вы можете (для каждого элемента) проверить атрибуты:

    foreach (var el in doc.Descendants()) {
        Console.WriteLine(el.Name);
        foreach (var attrib in el.Attributes()) {
            Console.WriteLine("> " + attrib.Name + " = " + attrib.Value);
        }
    }
1 голос
/ 16 ноября 2009

Вы должны попробовать:

reportElements.Descendants()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...