Cómo quitar atributos de un nodo de elementos en el DOM
Existen muchas formas de quitar atributos. Una de estas técnicas consiste en quitarlos de la colección de atributos. Para ello, hay que realizar los siguientes pasos:
Obtenga la colección de atributos del elemento utilizando
XmlAttributeCollection attrs = elem.Attributes;
.Quite el atributo de la colección de atributos utilizando uno de estos tres métodos:
Los siguientes métodos sirven para quitar atributos del nodo de elementos.
Utilice RemoveAllAttributes para quitar la colección de atributos.
Utilice RemoveAttribute para quitar un solo atributo por el nombre de la colección.
Utilice RemoveAttributeAt para quitar un solo atributo por el número de índice de la colección.
Otra alternativa es obtener el elemento, obtener el atributo de la colección de atributos y quitar directamente el nodo de atributos. Para obtener el atributo de la colección de atributos, puede utilizar un nombre, XmlAttribute attr = attrs["attr_name"];
, un índice XmlAttribute attr = attrs[0];
o certificar por completo el nombre con el espacio de nombres XmlAttribute attr = attrs["attr_localName", "attr_namespace"]
.
Con independencia del método que se utilice para quitar atributos, existen unas limitaciones especiales para quitar atributos que se hayan definido como predeterminados en la definición de tipo de documento (DTD). Los atributos predeterminados no se pueden quitar a menos que se quite el elemento al que pertenecen. Siempre hay atributos predeterminados para los elementos que los tengan declarados. Al quitar un atributo predeterminado de XmlAttributeCollection o de XmlElement, se inserta un atributo que lo reemplaza en el XmlAttributeCollection del elemento, que se inicializa con el valor predeterminado que se ha declarado. Si ha definido un elemento como <book att1="1" att2="2" att3="3"></book>
, tendrá un elemento book
con tres atributos predeterminados declarados. La implementación Document Object Model (DOM) XML garantiza que, siempre y cuando exista este elemento book
, tendrá tres atributos predeterminados de att1
, att2
y att3
.
Al llamarlo con un XmlAttribute, el método RemoveAll establece el valor del atributo en String.Empty, ya que no puede haber un atributo sin un valor.