Приведенным ниже способом можно прочитать XML файл любой структуры и вложенности. Для увеличения или уменьшения глубины вложенности необходимо увеличить или убрать циклы соответствующие циклы for
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
using System; using System.Collections.Generic; using System.Xml; using System.Text; namespace ClassLibrary1 { public class Class1 { try { XmlDocument doc = new XmlDocument(); doc.Load(@filepath); // загружается XML-файл XmlNodeList nodes = doc.ChildNodes; // Обходим значения foreach (XmlNode n in nodes) { // Обрабатываем в цикле только parameters if ("parameters".Equals(n.Name)) { // Читаем в цикле вложенные значения parameter for (XmlNode d = n.FirstChild; d != null; d = d.NextSibling) { // Обрабатываем в цикле только parameter if ("parameter".Equals(d.Name)) { //Можно, например, в этом цикле, да и не только..., взять какие-то данные for (XmlNode k = d.FirstChild; k != null; k = k.NextSibling) { if ("name".Equals(k.Name)) { id = d.Attributes.GetNamedItem("id").Value; // Так обрабатываем атрибуты name = k.FirstChild.Value; // Так обрабатываем значения } else if ("group".Equals(k.Name) && k.FirstChild != null) // + проверка на НУЛЛ { group = k.FirstChild.Value; // Присваиваем значение какой либо переменной } } } } } } } catch (Exception e) { MessageBox.Show("exeption" + e.Message); } } } |