Xml-документ, необходимо воссоздать объект по его структуре
Классы создаю такие
class Position
{
public string Caption { get; set; }
public string Quantity { get; set; }
public List<Tzr> tzrCollection { get; set; }
}
class Chapter
{
public string Caption { get; set; }
public int Age { get; set; }
public List<Position> positions { get; set; }
}
class Tzr
{
public string Caption { get; set; }
}
Вопрос - как добраться до tzr или mat, если имеются Position без mat или tzr? Если обращаться криво (мои способом) - то возвращает ошибку
XDocument doc = XDocument.Load("Data.xml");
var chapters = from c in doc.Element("Document").Element("Chapters").Elements("Chapter")
select new Chapter
{
Caption = c.Attribute("Caption").Value,
positions = (from p in c.Elements("Position")
select new Position
{
Caption = p.Attribute("Caption").Value,
Quantity = p.Attribute("Quantity").Value,
tzrCollection = (from t in p.Element("Resources").Elements("Mat")
where t != null
select new Tzr
{
Caption = t.Attribute("Caption").Value
}).ToList()
}).ToList()
};
Xml-документ, необходимо воссоздать объект по его структуре
Это называется десериализация.
В твоем случае нужно до конца описать структуру xml-файла, т. е. добавить еще один класс Document:
public class Document
{
public List<Chapter> Chapters { get; set; }
}
Дальше десериализуем:
XmlSerializer serializer = new XmlSerializer(typeof(Document));
XmlTextReader xr = new XmlTextReader(@"path\to\Data.xml");
Document doc = (Document)serializer.Deserialize(xr); // получаем объект из xml
List<Chapter> chapters = doc.Chapters; // получаем список объектов Chapter
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники