Рассматриваем работу с XML файлами на C#

Приветствую всех! Сегодня посмотрим классы и методы работы с файлами XML.

XML-eXtensible Markup Language-Текстовый формат, предназначенный для хранения структурированных данных для обмена информацией между программами, а
также для создания на его основе более специализированных языков разметки.

XML — это описанная в текстовом формате иерархическая структура, предназначенная для хранения любых структурированных данных. Визуально структура может быть представлена как дерево элементов. Элементы XML описываются тегами. Основан на принципах иерархии.

Документ XML:
• объявление XML – Первая строка XML-документа называется объявлением XML (англ. XML declaration) -это строка, указывающая версию XML. В версии 1.0 объявление XML может быть опущено, но, начиная с версии 1.1, оно обязательно. Также здесь может быть указана кодировка символов и наличие внешних зависимостей.
• Корневой элемент — документ имеет только один корневой элемент (англ. root element) (так же иногда называемый элемент документа (англ. document element)). Это означает,
что текст или другие данные всего документа должны быть расположены между единственным начальным корневым тегом и соответствующим ему конечным тегом.
• теги – Теги — остальная часть этого XML-документа, которая состоит из вложенных элементов, некоторые из которых имеют атрибуты и содержимое. Элемент обычно состоит из открывающего и закрывающего тегов, обрамляющих текст и другие элементы. Открывающий тег состоит из имени элемента в угловых скобках, а закрывающий тег
состоит из того же имени в угловых скобках, но перед именем ещё добавляется косая черта. Имена элементов, как и имена атрибутов, не могут содержать пробелы, но могут
быть на любом языке, поддерживаемом кодировкой XML-документа. Имя может начинаться с буквы, подчёркивания, двоеточия. Остальными символами имени могут быть те же символы, а также цифры, дефис, точка.
• комментарии – Комментарий — в любом месте дерева может быть размещен элемент-комментарий. XML-комментарии размещаются внутри специального тега, начинающегося с символов <!— и заканчивающегося символами —>. Два знака дефис (—) внутри комментария присутствовать не могут.

XML-классы в пространстве имен System.Xml образуют полнофункциональный интегрированный набор классов, позволяющий работать с XML-документами и данными. XML-классы поддерживают синтаксический анализ и запись XML-кода, изменение XML-данных в памяти, проверку данных и преобразование XSLT.

XmlAttribute: атрибут элемента.

XmlDeclaration: описание документа.

XmlDocument: документ XML.

XmlElement: элемент XML.

XmlNode: узел, может быть как весь документ, так и отдельные элемент.

 

Основным классом для работы с XML является XmlNode

Attributes-колекция атрибутов узла.

ChildNodes-коллекция дочерних узлов.

FirstChildпервый дочерний узел.

HasChildNodesпризнак наличия дочерних узлов

InnerTextвозвращает текст узла

InnerXmlвозвращает все содержимое xml

ParentNodeродитель текущего узела

Value-получить значение

Классы для работы с XML

XmlDocument — Предоставляет XML-документ для дальнейшей работы с ним.
XmlTextReader — Предоставляет средство чтения, обеспечивающее быстрый прямой доступ (без кэширования) к данным XML.
XmlTextWriter — Представляет средство записи, предоставляющее способ быстрого прямого создания потоков (без кэширования) или файлов с данными XML, которые соответствуют рекомендациям консорциума W3C по языку XML версии 1.0 и пространств имен в XML.

 

XmlDocument основные методы и свойство:

Load()-загрузает документ из внешнего источника.

LoadXml()-создает документ из строки с XML.

Greate()-создает соответствующий объект.

Save()-сохраняет документ.

DocumentElement-корневой элемент документа.

XmlElement основные методы и свойство:

XmlElement-представляет собой элемент, может иметь атрибуты, а также может иметь дочерние элементы.

GetAttribute()-возвращает значения атрибута по его имени.

Name-имя текущего элемента.

Remove-удаляет соответствующий объект.

SetAttribute()-добавляет в элемент новый атрибут с именем и значением.

 

XML Path Language

XPath (XML Path Language) — язык запросов к элементам XML-документа.
Разработан для организации доступа к частям документа XML в файлах трансформации XSLT и является стандартом консорциума W3C. XPath призван реализовать навигацию по DOM в XML.

Пространство имен XPath

Пространство имен, позволяющее использовать возможности языка XPath (XML Path Language).
Содержит класс XPathDocument, позволяющий создавать экземпляры XPathNavigator.
XPathNavigator – предоставляет курсор-ориентированную модель для просмотра и редактирования XML данных.

Основные классы для чтения и записи данных XML в пространстве имен System.Xml:
XmlReader, XmlWriter, XmlTextReader, XmlTextWriter.
XmlReader — обеспечивает последовательный доступ только для чтения к потоку XML-данных. Умеет работать только в одном направлении (вперед).
XmlWriter – Представляет средство записи, обеспечивающее быстрый прямой способ (без кэширования) создания потоков файлов, содержащих XML-данные.
XmlWriter позволяет: проверять допустимость XML-символов и допустимость XML-имен элементов и атрибутов, проверять правильность формата XML-документа, передавать значения, используя типы среды CLR вместо строк, записывать несколько документов в выходной поток, записывать допустимые имена, полные имена и маркеры имен.
XmlTextReader – расширяет класс XmlReader. Обеспечивает быстрый однонаправленный потоковый доступ к данным XML.
XmlTextWriter — расширяет класс XmlWriter. Обеспечивает быструю однонаправленную генерацию потоков данных XML.
XmlNode — предоставляет отдельный узел в XML-документе.
XPath (XML Path Language) — язык запросов к элементам XML-документа.

Пространство имен System.Xml.XPath содержит классы, определяющие модель курсора для переходов и изменения элементов сведений XML и предназначено для обеспечения высокой скорости работы.
XPathDocument – представляет собой быстрое, доступное только для чтения, хранимое в памяти представление XML-документа с помощью модели данных XPath. Его единственной задачей является создание навигаторов XPathNavigator. Создавать класс XPathDocument можно несколькими способами. Можно передать его конструктору
экземпляр XmlReader, имя файла XML-документа или объект, основанный на Stream. Это обеспечивает значительную гибкость, например, можно сначала применить
XmlValidatingReader для проверки правильности XML-документа и затем воспользоваться этим же объектом для создания XPathDocument.

XPathNavigator — представляет модель курсора для навигации по данным XML и их редактирования.

Теперь перейдем к рассмотрению примеров в работе с Xml файлом:

Загрузка и чтение содержимого из файла XML

Альтернативный пример того как можно прочитать содержимое XML из строки:

Осуществляем обход всех элементов XML файла.

Производим чтение атрибутов.

Чтение всех атрибутов.

Создаем XML файл и вносим в него значения и атрибуты.

Для создания комментария используем метод:

Выборка из XML с помощью XPath.

Создание навигаторов — XPathNavigator и  редактирования файла при помощи него.

 

Используем LINQ в XML

Быстрее и легче работать с xml форматом используя Linq, для этих целей мы подключим System.Xml.Linq

Основные классы

  • XAttribute: представляет атрибут xml-элемента
  • XComment: представляет комментарий
  • XDocument: представляет весь xml-документ
  • XElement: представляет отдельный xml-элемент

XElement и его методы:

  • Add(): добавляет новый атрибут или элемент
  • Attributes(): возвращает коллекцию атрибутов для данного элемента
  • Elements(): возвращает все дочерние элементы данного элемента
  • Remove(): удаляет данный элемент из родительского объекта
  • RemoveAll(): удаляет все дочерние элементы и атрибуты у данного элемента

 

Создания XML файла с содержимым.

Имея фаил мы можем вывести всю информацию  в консоль:

Теперь попробуем добавить новый контакт и номер телефона:

Теперь изменим в контакте, норме и имя

 

 

 

 

Обновлено: 13.06.2018 — 14:15

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.