Получить имена тегов программно - C#

Узнай цену своей работы

Формулировка задачи:

Листинг программы
  1. <a>
  2. <b>
  3. <c></c>
  4. <d></d>
  5. </b>
  6. <b>
  7. <d></d>
  8. <f></f>
  9. </b>
  10. <b>
  11. <d></d>
  12. <f></f>
  13. <e>
  14. <y></y>
  15. <z></z>
  16. </e>
  17. </b>
  18. </a>
Как мне получить имена тегов, которые не содержать в себе дочерних элементов, т.е c,d,f,y,z итп

Решение задачи: «Получить имена тегов программно»

textual
Листинг программы
  1. string xml = @"<root><item>
  2.    <id>id</id>
  3.    <first_name>first_name</first_name>
  4.    <last_name>last_name</last_name>
  5.    <country>
  6.      <id>1</id>
  7.      <title>Россия</title>
  8.    </country>
  9.    <has_mobile>1</has_mobile>
  10.    <skype>skype</skype>
  11.  </item>
  12. <item>
  13. <id>id</id>
  14.    <first_name>first_name</first_name>
  15.    <last_name>last_name</last_name>
  16.    <has_mobile>1</has_mobile>
  17.    <last_seen>
  18.      <time>1485967067</time>
  19.      <platform>4</platform>
  20.    </last_seen>
  21.  </item></root>";
  22.  
  23. XElement xdoc = XElement.Parse(xml);
  24.  
  25. // Формируем массив уникальных дочерних элементов
  26. string[] namesXPath = xdoc.Elements("item")
  27.     .SelectMany(x => x.Descendants())
  28.     .Where(x => !x.HasElements)
  29.     .Select(x => {
  30.         string name = x.Name.LocalName;
  31.         XElement xx = x;
  32.         while (xx.Parent.Name.LocalName != "item") {
  33.             xx = x.Parent;
  34.             name = xx.Name.LocalName + "/" + name;
  35.         }
  36.         return name;
  37.     })
  38.     .Distinct()
  39.     .ToArray();
  40.  
  41. // Перебираем по очереди все элементы item
  42. foreach (XElement xitem in xdoc.Elements("item"))
  43. {
  44.     // Перебираем все возможные дочерние элементы и пытаемся получить их значение
  45.     foreach (string xpath in namesXPath)
  46.     {
  47.         XElement x = xitem.XPathSelectElement(xpath);
  48.         string value = x == null ? "" : x.Value;
  49.         Console.WriteLine("{0}={1}", xpath, value);
  50.     }
  51.     Console.WriteLine("-------------------------");
  52. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.067 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут