XML DOM 노드 제거
removeChild() 메서드는 지정된 노드를 제거합니다。
removeAttribute() 메서드는 지정된 속성을 제거합니다。
예제
아래의 예제는 XML 파일을 사용합니다 books.xml
함수 loadXMLDoc()외부 JavaScript에서 XML 파일을 로드하는 데 사용됩니다。
- 요소 노드를 제거합니다
- 이 예제에서는 removeChild()를 사용하여 첫 번째 <book> 요소를 제거합니다。
- 현재 요소 노드를 제거합니다
- 이 예제에서는 parentNode와 removeChild()를 사용하여 현재 <book> 요소를 제거합니다。
- 텍스트 노드를 제거하기
- 이 예제에서는 removeChild()를 사용하여 첫 번째 <title> 요소의 텍스트 노드를 제거합니다。
- 텍스트 노드의 텍스트를 비웁니다
- 이 예제에서는 nodeValue() 속성을 사용하여 첫 번째 <title> 요소의 텍스트 노드를 비우습니다。
- 이름에 따라 속성을 제거합니다
- 이 예제에서는 removeAttribute()를 사용하여 첫 번째 <book> 요소에서 "category" 속성을 제거합니다。
- 객체에 따라 속성을 제거합니다
- 이 예제에서는 removeAttributeNode()를 사용하여 <book> 요소의 모든 속성을 제거합니다。
요소 노드를 제거합니다
removeChild() 메서드는 지정된 노드를 제거합니다。
한 노드가 제거되면 그 노드의 모든 자식 노드도 제거됩니다。
이 코드 조각은 로드된 xml에서 첫 번째 <book> 요소를 제거합니다:
xmlDoc=loadXMLDoc("books.xml"); y=xmlDoc.getElementsByTagName("book")[0]; xmlDoc.documentElement.removeChild(y);
예제 설명:
- 사용하여 loadXMLDoc() "을 붙입니다books.xml" xmlDoc에 로드합니다
- 변수 y를 제거할 요소 노드로 설정합니다
- removeChild() 메서드를 사용하여 부모 노드에서 요소 노드를 제거합니다
자신을 제거하다 - 현재 노드를 제거합니다
removeChild() 메서드는 지정된 노드를 제거할 수 있는 유일한 메서드입니다。
필요한 노드를 위치한 경우 parentNode 속성과 removeChild() 메서드를 사용하여 이 노드를 제거할 수 있습니다:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("book")[0]; x.parentNode.removeChild(x);
예제 설명:
- 사용하여 loadXMLDoc() "을 붙입니다books.xml" xmlDoc에 로드합니다
- 변수 y를 제거할 요소 노드로 설정합니다
- parentNode 속성과 removeChild() 메서드를 사용하여 이 요소 노드를 제거합니다
텍스트 노드를 제거하기
removeChild() 메서드는 텍스트 노드를 제거하는 데 사용될 수 있습니다:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("title")[0]; y=x.childNodes[0]; x.removeChild(y);
예제 설명:
- 사용하여 loadXMLDoc() "을 붙입니다books.xml" xmlDoc에 로드합니다
- 변수 x를 첫 번째 title 요소 노드로 설정합니다
- 변수 y를 제거할 텍스트 노드로 설정합니다
- removeChild() 메서드를 사용하여 부모 노드에서 노드를 제거합니다
계속 사용되지 않는 removeChild()를 사용하여 노드에서 텍스트를 제거합니다. nodeValue 속성을 대신 사용할 수 있습니다. 다음 장을 보세요。
텍스트 노드를 비우기
nodeValue 속성은 텍스트 노드의 값을 변경하거나 비우는 데 사용될 수 있습니다:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("title")[0].childNodes[0]; x.nodeValue="";
예제 설명:
- 사용하여 loadXMLDoc() "을 붙입니다books.xml" xmlDoc에 로드합니다
- 변수 x를 첫 번째 title 요소의 텍스트 노드로 설정합니다
- nodeValue 속성을 사용하여 텍스트 노드의 텍스트를 비우습니다
모든 <title> 요소의 텍스트 노드를 반복하며 변경합니다: TIY
이름에 따라 속성 노드를 제거합니다
removeAttribute(name) 메서드는 이름에 따라 속성 노드를 제거하는 데 사용됩니다。
예: removeAttribute('category')
아래 코드 부분은 첫 번째 <book> 요소에서 "category" 속성을 제거합니다:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("book"); x[0].removeAttribute("category");
예제 설명:
- 사용하여 loadXMLDoc() "을 붙입니다books.xml" xmlDoc에 로드합니다
- getElementsByTagName()를 사용하여 book 요소를 가져옵니다
- 첫 번째 book 요소 노드에서 "category" 속성을 제거합니다
모든 <book> 요소의 "category" 속성을 탐색하고 제거합니다: TIY.
객체에 따라 속성 노드를 제거합니다
removeAttributeNode(node) 메서드는 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); } }
예제 설명:
- 사용하여 loadXMLDoc() "을 붙입니다books.xml" xmlDoc에 로드합니다
- getElementsByTagName()를 사용하여 모든 book 노드를 가져옵니다
- 각 book 요소가 속성을 가지고 있는지 확인합니다
- book 요소에 속성이 존재하면 해당 속성을 제거합니다