в данной xml нужно добраться до значений FirstName, Surname, Patronymic и DepartmentName, но что-то совсем не выходит. Подскажите, пожалуйста, как получить эти значения.
XDocument empDoc = XDocument.Load("UsersTDO.xml");
var users = from entries in empDoc.Descendants("entry")
select new
{
FirstName = entries.Element("FirstName").Value
};
foreach (var user in users)
{
Console.WriteLine(user.FirstName);
}
Ответ
Есть море разных путей. Например, через XDocument
var ns = XNamespace.Get("http://www.w3.org/2005/Atom");
var nsm = XNamespace.Get("http://schemas.microsoft.com/ado/2007/08/dataservices/metadata");
var nsd = XNamespace.Get("http://schemas.microsoft.com/ado/2007/08/dataservices");
var xml = XDocument.Parse(content); // или XDocument.Load(...)
var entries = xml.Descendants(ns + "entry");
foreach (var entry in entries)
{
var props = entry.Descendants(nsm + "properties").Single();
var surname = props.Element(nsd + "Surname").Value;
Console.WriteLine(surname);
}
Вы в общем-то делаете более-менее правильно, но вы забыли указать namespace.
Если вам нужно вытянуть всю информацию (то есть, получить адекватную объектную модель), вам стоит, наверное, посмотреть в сторону честной десериализации (объявить дерево классов, расставить необходимые атрибуты и т. д.).
Комментариев нет:
Отправить комментарий