Получить имена тегов программно - C#
Формулировка задачи:
Листинг программы
- <a>
- <b>
- <c></c>
- <d></d>
- </b>
- <b>
- <d></d>
- <f></f>
- </b>
- <b>
- <d></d>
- <f></f>
- <e>
- <y></y>
- <z></z>
- </e>
- </b>
- </a>
Решение задачи: «Получить имена тегов программно»
textual
Листинг программы
- string xml = @"<root><item>
- <id>id</id>
- <first_name>first_name</first_name>
- <last_name>last_name</last_name>
- <country>
- <id>1</id>
- <title>Россия</title>
- </country>
- <has_mobile>1</has_mobile>
- <skype>skype</skype>
- </item>
- <item>
- <id>id</id>
- <first_name>first_name</first_name>
- <last_name>last_name</last_name>
- <has_mobile>1</has_mobile>
- <last_seen>
- <time>1485967067</time>
- <platform>4</platform>
- </last_seen>
- </item></root>";
- XElement xdoc = XElement.Parse(xml);
- // Формируем массив уникальных дочерних элементов
- string[] namesXPath = xdoc.Elements("item")
- .SelectMany(x => x.Descendants())
- .Where(x => !x.HasElements)
- .Select(x => {
- string name = x.Name.LocalName;
- XElement xx = x;
- while (xx.Parent.Name.LocalName != "item") {
- xx = x.Parent;
- name = xx.Name.LocalName + "/" + name;
- }
- return name;
- })
- .Distinct()
- .ToArray();
- // Перебираем по очереди все элементы item
- foreach (XElement xitem in xdoc.Elements("item"))
- {
- // Перебираем все возможные дочерние элементы и пытаемся получить их значение
- foreach (string xpath in namesXPath)
- {
- XElement x = xitem.XPathSelectElement(xpath);
- string value = x == null ? "" : x.Value;
- Console.WriteLine("{0}={1}", xpath, value);
- }
- Console.WriteLine("-------------------------");
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д