Paranoid - курс от Codeby Security School

Представляем вашему вниманию курс от команды codeby - "Комплекс мер по защите персональных данных, анонимности в интернете и не только" Подробнее ...


XML DOM 2

В предыдущей статье были описаны общие понятия касающиеся XML. В этой статье научимся выполнять основные действия, связанные с изменением, добавлением, поиском в XML файле.

XML файл, который используется для примера.

xml dom

В данный момент, наш файл содержит следующую структуру:

 

dom

DOM

Взаимоотношение между узлами в XML DOM, основные моменты:

1. Любой узел в DOM дереве имеет родителя ParentNode. В нашем примере garage является родителем для обоих элементов car, а оба элемента car, являются в свою очередь родителями для элементов: model и year.

Как получить родителя для xml элемента car?

2. У родителя могут быть дети ChildNodes. Например, для узла garage детьми являются оба элемента car. У элементов car, тоже есть дети model и year.

ChildNodes, представляет собой коллекцию, которая хранит все дочерние xml элементы, чтобы обратиться к нужному элементу, нужно указать его индекс. (Индекс всегда начинается с нуля!)

Например: как получить первый дочерний элемент?

3. Как и в обычной жизни ребенок может родиться первым FirstChild, или последним LastChild.

Если взять для примера элемент car, то

4. В свою очередь между дочерними элементами тоже существуют связи, они могут быть братьями или сестрами, если проводить параллели с реальной жизнью.

У ребенка может быть к примеру брат Previous Sibling и следующий брат Next Sibling

Если элемент не найден, то тогда возникает исключение: NullReferenceException, поэтому при работе с xml всегда используйте блоки try catch.

LastChild является NextSibling;
FirstChild является PreviousSibling;

С помощью выше описанных методов можно легко переместиться к нужному узлу и получить любое нужное вам значение.

Как получить значение xml элемента?

Значение xml элемента можно получить при помощи свойства InnerText, например:

Ещё один способ, чтобы получить это же значение xml элемента:

Последовательность перемещений по DOM дереву:

Получаем год:

Последовательность:

Ещё пример: 3 способа, для получения одного и того же результата.

Если надо получить год для элемента со значением Mazda:

Для BMW (два способа, получить один и тот же результат)

Как изменить значения xml элемента?

С помощью свойства InnerText() можно, как получить, так и изменить значение xml элемента, например изменим год.

При этом нужно помнить, что все изменения происходят с виртуальным xml файлом, если Вы откроете физический файл, то увидите, что по-прежнему в нём указан год 2007.

Для того, чтобы изменения вступили в силу, нужно воспользоваться методом Save, например:

Теперь информация будет изменена в «физическом» xml файле.


Codeby Security School от Сodeby

Мы запустили свою онлайн школу по информационной безопасности. Защита персональных данных, анонимность в сети интернет, настройка виртуальных машин, безопасная передача данных, анти форензика и еще много всего полезного в курсе Paranoid


Как получить количество дочерних элементов?

garage -> car содержит 2 ребенка: model и year
garage -> car -> model содержит 1 дочерний xml элемент.

Обращение к дочерним элементам

по индексу

С помощью цикла

Как получить имя xml элемента?

Создание нового XML элемента

Создадим новый элемент в нашем XML документе, чтобы он отличался от двух других (car) назовём его автобус (bus).

При создании нового элемента воспользуемся рекомендацией с сайта msdn и вместо стандартного new XmlElement воспользуемся методом CreateElement.

Создание и добавление нового xml элемента

Создадим новый xml элемент по имени «BUS».

Пояснение:

1. Сначала получаем root-элемент к которому будем крепить новые элементы.

2. В качестве проверки выведем текущее количество дочерних элементов у элемента garage: 2 (car и car)

3. Создаем новый элемент BUS

4. При помощи метода AppendChild добавляем новый элемент в дерево

5. Снова воспользуемся проверкой и выведем текущее количество элементов у элемента garage, теперь их стало 3: car, car, bus.

6. Чтобы изменения затронули физический файл, сохраняемся

В самом XML файле новый элемент будет выглядеть так:

Как добавить новый xml элемент?

Задача: создать новый XML элемент и добавить в него какое-нибудь текстовое содержимое, например год выпуска.

В XML файле:

Для наглядности

Добавление нового XML элемента

А теперь создадим узел «bus», с такой же архитектурой, как и car, то есть добавим узлы: model, year и какое-нибудь текстовое содержимое.

Создание XML элемента с дочерними элементами

Результат:
Как можно сократить, данный код? Например, следующим образом:
Ещё немного сократим код, для этого воспользуемся свойством InnerXml:
Результат

Создание XML элемента

Получить список элементов при помощи GetElementByTagName

GetElementByTagName возвращает XmlNodeList, в котором содержаться все элементы потомки, принадлежащие указному элементу, например, нам нужно получить все модели машин, которые хранятся в гараже:

Обращение при помощи индекса:

Как изменить текстовое содержимое, у только что созданного элемента «bus», при помощи метода GetElementByTagName?

Либо можно изменить имя liaz на Ikarus

Читайте также:


Безопасная сделка с гарантом Сodeby

Гарант является доверенным посредником между Участниками при проведении сделки.​ Услуга сайта «Проведение сделок через Гаранта» предоставляется всем зарегистрированным пользователям codeby.net Подробнее ...


Похожие темы

c# Как добавить xml узел ? Как добавить новый узел в xml документе? Продолжаем работу с технологией Linq to XML и сегодня Вы узнаете, как добавить xml узел в xml документе. До...
Работа с элементом управления TreeView в языке c#... c# работа с элементом управления TreeView Для начала создадим Windows Forms приложение. После чего добавим на форму элемент управления TreeView, кото...
DOM — Объектная модель документа для работы ... DOM часть первая В состав библиотеки базовых классов (BCL) платформы .NET Framework входит сборка System.Xml.dll, в которой хранится реализация техно...
Язык XML практика и теория Введение в язык XML Данный раздел посвящен работе с XML. В нём будет собран, как теоретический, так и практический материал. Будут рассмотрены основн...
Атрибуты XML файла Атрибуты XML файла В прошлой статье Вы узнали, как работать с элементами и узлами XML файла. В этой статье Вы узнаете, что такое атрибуты, а так же р...