Работа с XML в C#

XML-документы

Последнее обновление: 20.02.2022

На сегодняшний день XML является одним из распространенных стандартов документов, который позволяет в удобной форме сохранять сложные по структуре данные. Поэтому разработчики платформы .NET включили в фреймворк широкие возможности для работы с XML.

Прежде чем перейти непосредственно к работе с XML-файлами, сначала рассмотрим, что представляет собой xml-документ и как он может хранить объекты, используемые в программе на c#.

Например, у нас есть следующий класс:

class Person
{
    public string Name { get;}
    public int Age { get; set; }
    public string Company { get; set; }
    public Person(string name, int age, string company)
    {
        Name = name;
        Age = age;
        Company = company;
    }
}

В программе на C# мы можем создать список объектов класса Person:

var employees = new List<Person>
{
    new Person ("Tom", 37, "Microsoft"),
    new Person ("Bob", 41, "Google")
};

Чтобы сохранить список в формате xml мы могли бы использовать следующий xml-файл:

<?xml version="1.0" encoding="utf-8" ?>
<people>
  <person name="Tom">
    <company>Microsoft</company>
    <age>37</age>
  </person>
  <person name="Bob">
    <company>Google</company>
    <age>41</age>
  </person>
</people>

XML-документ объявляет строка <?xml version="1.0" encoding="utf-8" ?>. Она задает версию (1.0) и кодировку (utf-8) xml. Далее идет собственно содержимое документа.

XML-документ должен иметь один единственный корневой элемент, внутрь которого помещаются все остальные элементы. В данном случае таким элементом является элемент <people>. Внутри корневого элемента <people> задан набор элементов <person>. Вне корневого элемента мы не можем разместить элементы person.

Каждый элемент определяется с помощью открывающего и закрывающего тегов, например, <person> и </person>, внутри которых помещается значение или содержимое элементов. Также элемент может иметь сокращенное объявление: <person /> - в конце элемента помещается слеш.

Элемент может иметь вложенные элементы и атрибуты. В данном случае каждый элемент person имеет два вложенных элемента company и age и атрибут name.

Атрибуты определяются в теле элемента и имеют следующую форму: название="значение". Например, <person name="Bill Gates">, в данном случае атрибут называется name и имеет значение Bill Gates

Внутри простых элементов помещается их значение. Например, <company>Google</company> - элемент company имеет значение Google.

Названия элементов являются регистрозависимыми, поэтому <company> и <COMPANY> будут представлять разные элементы.

Таким образом, весь список Users из кода C# сопоставляется с корневым элементом <people>, каждый объект Person - с элементом <person>, а каждое свойство объекта Person - с атрибутом или вложенным элементом элемента <person>

Что использовать для свойств - вложенные элементы или атрибуты? Это вопрос предпочтений - мы можем использовать как атрибуты, так и вложенные элементы. Так, в предыдущем примере вполне можно использовать вместо атрибута вложенный элемент:

<?xml version="1.0" encoding="utf-8" ?>
<people>
  <person>
	<name>Tom</name>
    <company>Microsoft</company>
    <age>37</age>
  </person>
  <person>
	<name>Bob</name>
    <company>Google</company>
    <age>41</age>
  </person>
</people>

Теперь рассмотрим основные подходы для работы с XML, которые имеются в C#.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850