Получить имена тегов программно - 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("-------------------------"); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д