XML DOM 노드 추가
노드 추가 - appendChild()
appendChild()
이 메서드는 기존 노드에 자식 노드를 추가합니다.
새 노드는 어떤 현재 자식 요소 뒤에도 추가될 수 있습니다.
주의:노드의 위치가 중요하다면 insertBefore()를 사용하십시오.
아래의 코드 스니프는 요소 (<edition>)를 생성하고, 첫 번째 <book> 요소의 마지막 자식 요소 뒤에 추가합니다:
예제 1
newEle = xmlDoc.createElement("edition"); xmlDoc.getElementsByTagName("book")[0].appendChild(newEle);
예제 설명:
- 추정하면 books.xml 로 로드되었습니다
xmlDoc
中 - 새로운 노드 <edition>을 생성합니다
- 첫 번째 <book> 요소에 노드를 추가합니다
이 부분의 코드는 위와 같은 역할을 합니다만, 새로운 요소에 값을 추가했습니다:
예제 2
newEle = xmlDoc.createElement("edition"); newText = xmlDoc.createTextNode("첫 번째판"); newEle.appendChild(newText); xmlDoc.getElementsByTagName("book")[0].appendChild(newEle);
예제 설명:
- 추정하면 books.xml 로 로드되었습니다
xmlDoc
中 - 새로운 노드 <edition>을 생성합니다
- 새로운 텍스트 노드를 생성합니다
"제1판"
- 이 텍스트 노드를 <edition> 노드에 추가합니다
- <edition> 노드를 <book> 요소에 추가합니다
노드 삽입 - insertBefore()
insertBefore()
메서드는 지정된 자식 노드 앞에 노드를 삽입합니다。
추가된 노드의 위치가 중요하다면, 이 메서드가 매우 유용합니다:
인스턴스
newNode = xmlDoc.createElement("book"); x = xmlDoc.documentElement; y = xmlDoc.getElementsByTagName("book")[3]; x.insertBefore(newNode,y);
예제 설명:
- 추정하면 books.xml 로 로드되었습니다
xmlDoc
中 - 새로운 요소 노드 <book>을 생성합니다
- 이 새로운 노드를 마지막 <book> 요소 노드 앞에 삽입합니다
- insertBefore()의 두 번째 파라미터가 null이면, 새로운 노드는 마지막으로 있는 자식 노드 뒤에 추가됩니다。
x.insertBefore(newNode,null)와 x.appendChild(newNode)는 x에 새로운 자식 노드를 추가할 수 있습니다。
새로운 속성 추가
setAttribute()
메서드는 속성 값을 설정합니다。
속성이 존재하지 않으면 setAttribute()
새로운 속성을 생성할 수 있습니다:
인스턴스
xmlDoc.getElementsByTagName('book')[0].setAttribute("edition","제1판");
예제 설명:
- 추정하면 books.xml 로 로드되었습니다
xmlDoc
中 - 첫 번째 <book> 요소의 "edition" 속성 값을 "제1판"으로 설정합니다
주의:addAttribute()라는 메서드는 존재하지 않습니다. 속성이 존재하지 않으면 setAttribute()는 새로운 속성을 생성합니다. 속성이 이미 존재하면 setAttribute() 메서드는 기존 값을 덮어씁니다。
텍스트를 텍스트 노드에 추가 - insertData()
insertData()
메서드는 기존 텍스트 노드에 데이터를 삽입합니다。
insertData()
메서드는 두 개의 파라미터를 가집니다:
- offset - 시작할 위치는 어디서입니까?(0부터 시작합니다)
- string - 삽입할 문자
아래의 코드 단편은 "나의 가장 사랑하는"을 로드된 XML의 첫 번째 <title> 요소의 텍스트 노드에 추가합니다:
인스턴스
xmlDoc.getElementsByTagName("title")[0].childNodes[0].insertData(0,"나의 가장 사랑하는");