Usuwanie atrybutów z węzła elementu w ramach modelu DOM
Istnieje wiele sposobów usuwania atrybutów. Jedną z technik jest usunięcie ich z kolekcji atrybutów. W tym celu są wykonywane następujące kroki:
Pobierz kolekcję atrybutów z elementu przy użyciu polecenia
XmlAttributeCollection attrs = elem.Attributes;
.Usuń atrybut z kolekcji atrybutów przy użyciu jednej z trzech metod:
Poniższe metody usuwają atrybuty z węzła elementu.
Użyj RemoveAllAttributes polecenia , aby usunąć kolekcję atrybutów.
Służy RemoveAttribute do usuwania pojedynczego atrybutu według nazwy z kolekcji.
Służy RemoveAttributeAt do usuwania pojedynczego atrybutu według numeru indeksu z kolekcji.
Kolejną alternatywą jest pobranie elementu, pobranie atrybutu z kolekcji atrybutów i bezpośrednie usunięcie węzła atrybutu. Aby uzyskać atrybut z kolekcji atrybutów, możesz użyć nazwy , XmlAttribute attr = attrs["attr_name"];
indeksu XmlAttribute attr = attrs[0];
lub przez pełne kwalifikacje nazwy z przestrzeni nazw XmlAttribute attr = attrs["attr_localName", "attr_namespace"]
.
Niezależnie od metody używanej do usuwania atrybutów istnieją specjalne ograniczenia dotyczące usuwania atrybutów zdefiniowanych jako atrybuty domyślne w definicji typu dokumentu (DTD). Nie można usunąć atrybutów domyślnych, chyba że element, do którego należy, zostanie usunięty. Atrybuty domyślne są zawsze obecne dla elementów, które mają zadeklarowane atrybuty domyślne. Usunięcie atrybutu domyślnego z XmlAttributeCollection elementu lub z XmlElement wyników powoduje wstawienie atrybutu zastępczego do XmlAttributeCollection elementu, zainicjowane do wartości domyślnej, która została zadeklarowana. Jeśli masz element zdefiniowany jako <book att1="1" att2="2" att3="3"></book>
, masz book
element z zadeklarowanymi trzema atrybutami domyślnymi. Implementacja modelu obiektów dokumentów XML (DOM) gwarantuje, że o ile ten book
element istnieje, ma te trzy atrybuty att1
domyślne , att2
i att3
.
W przypadku wywołania za pomocą XmlAttributeRemoveAll metody metoda ustawia wartość atrybutu na String.Empty, ponieważ atrybut nie może istnieć bez wartości.