Чтение xml - C# (184840)
Формулировка задачи:
Добрый день!
Имеется xml файл такого содержания:
Пытаюсь вывести uid, first_name, last_name - получается - выводит поочередно данные каждого тега user.
Но внутри тега relatives мне нужны данные каждого тега type. А программа выводит мне данные только первого тега:
<uid>33333333</uid>
<type>sibling</type>
Не могу понять почему...
Код программы:
Помогите пожалуйста разобраться.
<response list="true"> <count>19189</count> <user> <uid>1111111</uid> <first_name>Frag</first_name> <last_name>Fragovich</last_name> </user> <user> <uid>222222</uid> <first_name>User</first_name> <last_name>Userovich</last_name> <relatives list="true"> <relative> <uid>33333333</uid> <type>sibling</type> </relative> <relative> <uid>4444444</uid> <type>sibling</type> </relative> <relative> <uid>5555555</uid> <type>sibling</type> </relative> <relative> <uid>6666666</uid> <type>sibling</type> </relative> <relative> <uid>7777777</uid> <type>sibling</type> </relative> </relatives> </user> <user> <uid>8888888</uid> <first_name>Prog</first_name> <last_name>Progovich</last_name> </user> </response>
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml.Linq; namespace xmltest { class Program { static void Main(string[] args) { string fileName = @"c:\1\test1.xml"; XDocument document = XDocument.Load(fileName); foreach (XElement element in document.Root.Elements()) { switch (element.Name.ToString()) { case "user": foreach (XElement el in element.Elements()) { switch (el.Name.ToString()) { case "uid": Console.WriteLine("uid: " + el.Value); break; case "first_name": Console.WriteLine("first_name: " + el.Value); break; case "last_name": Console.WriteLine("last_name: " + el.Value); break; case "relatives": foreach (XElement ellev1 in el.Elements()) { switch (ellev1.Name.ToString()) { case "relative": foreach (XElement ellev2 in ellev1.Elements()) { switch (ellev2.Name.ToString()) { case "uid": Console.WriteLine("uid: " + ellev2.Value); break; case "type": Console.WriteLine("type: " + ellev2.Value); break; case "name": Console.WriteLine("name: " + ellev2.Value); break; } } break; } break; } break; } } break; } } Console.Read(); } } }
Решение задачи: «Чтение xml»
textual
Листинг программы
var users = document.XPathSelectElements("response/user") .Select(u=>new { Uid = u.Element("uid")?.Value, FirstName = u.Element("first_name")?.Value, LastName = u.Element("last_name")?.Value, Relatives = u.Element("relatives")? .Elements("relative") .Select(r=>new { type = r.Element("type")?.Value }) .ToList() }).ToList();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д