ホーム HTML CSS XML JAVASCRIPT   PHP SQL MORE...   リファレンス 事例集    

XML DOM ノードの削除

« 前章へ 次章へ »

removeChild()メソッドは、指定したノードを削除します。

removeAttribute()メソッドは、指定した属性を削除します。


以下の例は、XMLファイルbooks.xmlを使用します。
外部JavaScriptの関数 loadXMLDoc()は、XMLファイルをロードするのに使用します。

要素ノードの削除
この例は、最初の<book>要素を削除するために、removeChild()を使用します。

カレント要素ノードの削除
この例は、カレント<book>要素を削除するために、parentNodeとremoveChild()を使用します。

テキストノードの削除
この例は、テキストノードを最初の<title>要素から削除するために、removeChild()を使用します。

テキストノードのテキストクリア
この例は、最初の<title>要素のテキストノードをクリアするために、nodeValue()プロパティを使用します。

名前による属性削除
この例は、"category"属性を最初の<book>要素から削除するために、removeAttribute()を使用します。

オブジェクトによる属性削除
この例は、すべての属性を全<book>要素から削除するために、removeAttributeNode()を使用します。


要素ノードの削除

removeChild()メソッドは、指定したノードを削除します。

ノードが削除されたときは、すべての子ノードもまた削除されます。

以下のコードは、ロードしたxmlから、最初の<book>要素を削除します:

xmlDoc=loadXMLDoc("books.xml");

y=xmlDoc.getElementsByTagName("book")[0];

xmlDoc.documentElement.removeChild(y);

試してください »

例の説明:

  1. loadXMLDoc()を用い、xmlDocに"books.xml"をロードします
  2. 変数 y に削除する要素ノードを設定します
  3. 親ノードからremoveChild()メソッドを使用して、要素ノードを削除します

自分自身の削除 - カレントノードの削除

removeChild()メソッドは、指定ノードを削除する唯一の方法です。

削除したいノードにナビゲートした時、parentNodeプロパティとremoveChild()メソッドを用いることで、そのノードを削除することが可能になります:

xmlDoc=loadXMLDoc("books.xml");

x=xmlDoc.getElementsByTagName("book")[0];

x.parentNode.removeChild(x);

試してください »

例の説明:

  1. loadXMLDoc()を用い、xmlDocに"books.xml"をロードします
  2. 変数yに削除する要素ノードを設定します
  3. parentNodeプロパティとremoveChild()メソッドを用いて、要素ノードを削除します

テキストノードの削除

removeChild()メソッドは、テキストノードを削除するためにも使用することができます:

xmlDoc=loadXMLDoc("books.xml");

x=xmlDoc.getElementsByTagName("title")[0];

y=x.childNodes[0];
x.removeChild(y);

試してください »

例の説明:

  1. loadXMLDoc()を用い、xmlDocに"books.xml"をロードします
  2. 変数 x に最初のタイトル要素ノードを設定します
  3. 変数 y に削除するテキストノードを設定します
  4. removeChild()メソッドを使用し、親ノードから要素ノードを削除します

ノードから、テキストを削除するためだけにremoveChild()を使用することは、あまり一般的ではありません。 nodeValueプロパティが代わりに使われます。 次の項を見てください。


テキストノードのクリア

nodeValueプロパティは、テキストノード値の変更やクリアに使用することができます:

xmlDoc=loadXMLDoc("books.xml");

x=xmlDoc.getElementsByTagName("title")[0].childNodes[0];
x.nodeValue="";

試してください »

例の説明:

  1. loadXMLDoc()を用い、xmlDocに"books.xml"をロードします
  2. 変数 x に最初のタイトル要素のテキストノードを設定します
  3. nodeValueプロパティを使用し、テキストノードからテキストをクリアします

すべての<title>要素を通るループで、テキストノードを変更します: 試してください


名前による属性ノードの削除

removeAttribute(name)メソッドは、名前で属性ノードを削除するために使用します。

例: removeAttribute('category')

以下のコードは、最初の<book>要素の"category"属性を削除します:

xmlDoc=loadXMLDoc("books.xml");

x=xmlDoc.getElementsByTagName("book");
x[0].removeAttribute("category");

試してください »

例の説明:

  1. loadXMLDoc()を用い、xmlDocに"books.xml"をロードします
  2. book ノードを取得するのにgetElementsByTagName()を使用します
  3. 最初の book 要素ノードから、"category"属性を削除します

すべての<book> 要素を通るループで、"category"属性を削除します: 試してください


オブジェクトによる属性ノードの削除

removeAttributeNode(node) メソッドは、パラメタとしてノードオブジェクトを使用することにより、属性ノードを削除するために使用します。

例: removeAttributeNode(x)

以下のコードは、全ての<book>要素の全属性を削除します:

xmlDoc=loadXMLDoc("books.xml");

x=xmlDoc.getElementsByTagName("book");

for (i=0;i<x.length;i++)
{
while (x[i].attributes.length>0)
  {
  attnode=x[i].attributes[0];
  old_att=x[i].removeAttributeNode(attnode);
  }
}

試してください »

例の説明:

  1. loadXMLDoc()を用い、xmlDocに"books.xml"をロードします
  2. 全の book ノードを取得するために、getElementsByTagName()を使用します
  3. 各 book 要素に、何らかの属性がないかをチェックします
  4. book 要素に属性がある間は、属性を削除します

« 前章へ 次章へ »