Чат codeby в telegram перезагрузка

Обсуждаем вопросы информационной безопасности, методы защиты информации, программирование. Задавайте свои вопросы и комментируйте чужие.  Подробнее ...

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.net совместно с PHDays 8

Объявляют о проведении грандиозного конкурса с умопомрачительными призами ! Получи бесплатно билет на PHDays 8, деньги, футболку с символикой codeby, а так же всеобщий респект и уважение. Подробнее ...

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

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

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


Наш канал в telegram канал codeby

Пишем об информационной безопасности, методах защиты информации, о программировании. Не пропускай новости с кодебай, будь в тренде !  Подробнее ...

Похожие темы

Заполнение TreeView данными из XML файла... c# Работа с TreeView. Часть 2 Продолжаем работать с элементом управления TreeView и сегодня рассмотрим следующие моменты: создание и добавления узлов...
Чтение Xml файла с выводом данных в DataGridView в... Как выполнить чтение xml файла с выводом данных в DataGridView? В этой статье хочу показать на простом примере, как можно выполнить чтение xml файла ...
c# Как добавить xml узел ? Как добавить новый узел в xml документе? Продолжаем работу с технологией Linq to XML и сегодня Вы узнаете, как добавить xml узел в xml документе. До...
Как добавить XML файл в Solution Explorer... Как добавить XML файл в проект В окне Solution Explorer нажмите правую кнопку мыши на имени текущего проекта. В появившемся контекстном меню выберите...
Удаление узла в xml документе... Как удалить узел в xml документе? В этой небольшой заметке хочу показать Вам, как удалить узел в xml документе с помощью технологии Linq to XML. И...