Удаление атрибутов из узла элемента в DOM
Существует много способов удаления атрибутов. Один из них заключается в их удалении из коллекции атрибутов. Для этого выполняются следующие шаги.
Возвратите коллекцию атрибутов из элемента с помощью кода
XmlAttributeCollection attrs = elem.Attributes;
.Удалите атрибут из коллекции атрибутов, используя один из трех методов.
Следующие методы удаляют атрибуты из узла элемента.
Метод RemoveAllAttributes удаляет коллекцию атрибутов.
Метод RemoveAttribute удаляет из коллекции один атрибут по заданному имени.
Метод RemoveAttributeAt удаляет из коллекции один атрибут по индексному номеру.
Чтобы удалить атрибут, можно также вернуть элемент, вернуть атрибут из коллекции атрибутов и напрямую удалить узел атрибута. Чтобы вернуть атрибут из коллекции атрибутов, можно использовать имя XmlAttribute attr = attrs["attr_name"];
, индекс XmlAttribute attr = attrs[0];
или полное имя, включая пространство имен XmlAttribute attr = attrs["attr_localName", "attr_namespace"]
.
Независимо от способа удаления атрибута, существуют специальные ограничения на удаление атрибутов, определенные в определении DTD как атрибуты по умолчанию. Атрибуты по умолчанию нельзя удалять, если не удален элемент, которому они принадлежат. Атрибуты по умолчанию всегда присутствуют в элементах, для которых декларированы атрибуты по умолчанию. Удаление атрибута по умолчанию из коллекции XmlAttributeCollection или XmlElement приводит к вставке замещающего атрибута в коллекцию XmlAttributeCollection элемента и инициализации декларированного значения по умолчанию. Если существует элемент, определенный как <book att1="1" att2="2" att3="3"></book>
, то существует элемент book
с тремя атрибутами, объявленными по умолчанию. Реализация модели XML DOM гарантирует, что, пока существует элемент book
, он имеет три атрибута по умолчанию: att1
, att2
и att3
.
Если метод XmlAttribute вызывается с атрибутом RemoveAll, он присваивает атрибуту значение String.Empty, поскольку атрибут не может существовать без значения.