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

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

Как удалить узел в xml документе?

В этой небольшой заметке хочу показать Вам, как удалить узел в xml документе с помощью технологии Linq to XML.

И так, для начала создадим и добавим в проект xml файл, который имеет следующую структуру:

Затем добавим строку, которая позволяет при работе с Linq to XML напрямую обращаться к типам, не указывая полных имен.

ключевое слово using

Удаление xml узла

В качестве первого примера рассмотрим, как удалить последний узел в xml документе.

Сначала с помощью метода Load загружаем xml файл и строим DOM дерево. Затем, с помощью метода Nodes, получаем коллекцию всех xml узлов, кроме корневого узла, которые содержаться в данном xml документе. После чего, используя метод расширения ElementAt, получаем доступ к элементам, полученной ранее коллекции. И с помощью метода Remove удаляем указанный xml узел.

Но, так же мы можем, удалить последний xml узел и, не перебирая и получая все узлы, а сразу же обратившись к нему с помощью свойства LastNode.

результат

удаление xml узла

Удаление узла с атрибутом

Во втором примере задача остаётся той же, что и в первом примере, но только в данном случаи мы будем удалять узел, зная значение его атрибута. Например, удалим xml узел, который имеет атрибут id со значение три.

В результате будет удалён третий (последний) узел в xml файле.

Удаление дочернего xml узла

Так же очень часто встречается задача, когда необходимо удалить дочерний узел в xml документе. Например, предположим, что нам необходимо удалить в созданном чуть ранее xml файле дочерний узел brothers.

атрибут xml узла

решение:

В данном примере сначала находим второй узел, а затем, используя операцию явного приведения и метод Remove, удаляем дочерний xml узел.


Codeby.net совместно с PHDays 8

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

Обратиться ко второму узлу мы можем так же и, не используя метод Nodes, а например следующим образом:

результат

дочерний узел

Как удалить все узлы в xml файле?

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

В результате будут удалены все узлы в xml документе, кроме корневого узла!

xml файл

Если же Вам необходимо удалить абсолютно все узлы, то тогда воспользуйтесь следующим способом:

Update.

В данной статье, во многих приведенных примерах, используется явное и не явное приведение типа XNode к типу XElement, например:

Такой способ можно использовать только в том случаи, если Вы точно уверены, что все узлы в xml файле имеют тип XElement (элемент). Если же при переборе в цикле мы попадем на другой тип, например комментарий (XComment), то в таком случае произойдет выброс исключения.

Поэтому, если Вам необходимо получить все узлы только типа XElement, то в таком случае лучше всего воспользоваться методом Descendants, например:

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

Следующий пример так же приводит к возникновению исключения при тех же ранее описанных условиях:

Чтобы этого избежать, можно добавить следующую проверку:

На этом всё, если есть какие-то вопросы, то оставляйте их в комментариях.

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


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

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

Похожие темы

Атрибуты XML файла Атрибуты XML файла В прошлой статье Вы узнали, как работать с элементами и узлами XML файла. В этой статье Вы узнаете, что такое атрибуты, а так же р...
Протокол XML-RPC для вызова удаленных процедур Wor... Вызов удаленной процедуры WordPress с помощью протокола XML-RPC XML-RPC это протокол вызова удаленных процедур, который использует формат XML для код...
В чём отличие между методом Nodes и Descendants?... В чём разница между методом Nodes и Descendants? В этой статье хочу рассказать про метод Descendants и показать его отличие от метода Nodes при работ...
Заполнение TreeView данными из XML файла... c# Работа с TreeView. Часть 2 Продолжаем работать с элементом управления TreeView и сегодня рассмотрим следующие моменты: создание и добавления узлов...
Как найти xml элемент по его атрибуту в XML файле?... Как найти xml элемент по его атрибуту? Из этой статьи Вы узнаете, как найти xml элемент по его атрибуту с помощью простого LINQ запроса. И так для на...