DOM の要素ノードからの属性の削除Removing Attributes from an Element Node in the DOM

属性を削除するには、さまざまな方法があります。There are many ways to remove attributes. その 1 つとして、属性コレクションから属性を削除する方法があります。One technique is to remove them from the attribute collection. 属性コレクションから属性を削除するには、次の手順を実行します。To do this, the following steps are performed:

  1. XmlAttributeCollection attrs = elem.Attributes; を使用して要素から属性コレクションを取得します。Get the attribute collection from the element using XmlAttributeCollection attrs = elem.Attributes;.

  2. 属性コレクションから属性を削除するには、次の 3 つのメソッドのいずれかを使用します。Remove the attribute from the attribute collection using one of three methods:

    • Remove メソッドを使用して、特定の属性を削除する。Use Remove to remove a specific attribute.

    • RemoveAll メソッドを使用して、コレクションからずべての属性を削除し、属性のない要素を残す。Use RemoveAll to remove all attributes from the collection and leave the element with no attributes.

    • RemoveAt メソッドを使用して、コレクションのインデックス番号を使用して 1 つの属性を属性コレクションから削除する。Use RemoveAt to remove an attribute from the attribute collection by using its index number.

要素ノードから属性を削除するには、次のメソッドを使用します。The following methods remove attributes from the element node.

  • RemoveAllAttributes メソッドを使用して、属性のコレクションを削除する。Use RemoveAllAttributes to remove the attribute collection.

  • RemoveAttribute メソッドを使用して、名前を指定して単一の属性をコレクションから削除する。Use RemoveAttribute to remove a single attribute by name from the collection.

  • RemoveAttributeAt メソッドを使用して、インデックス番号を指定して単一の属性をコレクションから削除する。Use RemoveAttributeAt to remove a single attribute by index number from the collection.

もう 1 つの方法として、要素を取得し、属性コレクションから属性を取得して、属性ノードを直接削除する方法もあります。One more alternative is to get the element, get the attribute from the attribute collection, and remove the attribute node directly. 属性コレクションから属性を取得するには、名前 (XmlAttribute attr = attrs["attr_name"];)、インデックス (XmlAttribute attr = attrs[0];)、または名前空間を指定した完全修飾名 (XmlAttribute attr = attrs["attr_localName", "attr_namespace"]) を使用できます。To get the attribute from the attribute collection, you can use a name, XmlAttribute attr = attrs["attr_name"];, an index XmlAttribute attr = attrs[0];, or by fully qualifying the name with the namespace XmlAttribute attr = attrs["attr_localName", "attr_namespace"].

既定の属性としてドキュメント型定義 (DTD) に定義されている属性を削除するときは、使用するメソッドにかかわらず、特別な制限が適用されます。Regardless of the method used to remove attributes, there are special limitations on removing attributes that are defined as default attributes in the document type definition (DTD). 既定の属性は、その属性が含まれている要素を削除しない限り削除できません。Default attributes cannot be removed unless the element they belong to is removed. 既定の属性が宣言されている要素には、常に既定の属性が存在します。Default attributes are always present for elements that have default attributes declared. XmlAttributeCollection または XmlElement から既定の属性を削除すると、代わりの属性が要素の XmlAttributeCollection に挿入され、宣言されている既定値に初期化されます。Removing a default attribute from an XmlAttributeCollection or from the XmlElement results in a replacement attribute inserted into the XmlAttributeCollection of the element, initialized to the default value that was declared. たとえば、<book att1="1" att2="2" att3="3"></book> として定義された要素がある場合、book 要素には、宣言された 3 つの既定の属性が設定されます。If you have an element defined as <book att1="1" att2="2" att3="3"></book>, then you have a book element with three default attributes declared. XML ドキュメント オブジェクト モデル (DOM) の実装によって、この book要素が存在する限り、att1att2、および att3 という 3 つの既定の属性が存在することが保証されます。The XML Document Object Model (DOM) implementation guarantees that as long as this book element exists, it has these three default attributes of att1, att2, and att3.

XmlAttribute を呼び出した場合、RemoveAll メソッドにより、属性の値が String.Empty に設定されます。これは、値のない属性が存在できないためです。When called with an XmlAttribute, the RemoveAll method sets the value of the attribute to String.Empty, as an attribute cannot exist without a value.

関連項目See also