XML DOM 노드 추가

노드 추가 - appendChild()

appendChild() 이 메서드는 기존 노드에 자식 노드를 추가합니다.

새 노드는 어떤 현재 자식 요소 뒤에도 추가될 수 있습니다.

주의:노드의 위치가 중요하다면 insertBefore()를 사용하십시오.

아래의 코드 스니프는 요소 (<edition>)를 생성하고, 첫 번째 <book> 요소의 마지막 자식 요소 뒤에 추가합니다:

예제 1

newEle = xmlDoc.createElement("edition");
xmlDoc.getElementsByTagName("book")[0].appendChild(newEle);

직접 시도해보세요

예제 설명:

  1. 추정하면 books.xml 로 로드되었습니다 xmlDoc
  2. 새로운 노드 <edition>을 생성합니다
  3. 첫 번째 <book> 요소에 노드를 추가합니다

이 부분의 코드는 위와 같은 역할을 합니다만, 새로운 요소에 값을 추가했습니다:

예제 2

newEle = xmlDoc.createElement("edition");
newText = xmlDoc.createTextNode("첫 번째판");
newEle.appendChild(newText);
xmlDoc.getElementsByTagName("book")[0].appendChild(newEle);

직접 시도해보세요

예제 설명:

  1. 추정하면 books.xml 로 로드되었습니다 xmlDoc
  2. 새로운 노드 <edition>을 생성합니다
  3. 새로운 텍스트 노드를 생성합니다 "제1판"
  4. 이 텍스트 노드를 <edition> 노드에 추가합니다
  5. <edition> 노드를 <book> 요소에 추가합니다

노드 삽입 - insertBefore()

insertBefore() 메서드는 지정된 자식 노드 앞에 노드를 삽입합니다。

추가된 노드의 위치가 중요하다면, 이 메서드가 매우 유용합니다:

인스턴스

newNode = xmlDoc.createElement("book");
x = xmlDoc.documentElement;
y = xmlDoc.getElementsByTagName("book")[3];
x.insertBefore(newNode,y);

직접 시도해보세요

예제 설명:

  1. 추정하면 books.xml 로 로드되었습니다 xmlDoc
  2. 새로운 요소 노드 <book>을 생성합니다
  3. 이 새로운 노드를 마지막 <book> 요소 노드 앞에 삽입합니다
  4. insertBefore()의 두 번째 파라미터가 null이면, 새로운 노드는 마지막으로 있는 자식 노드 뒤에 추가됩니다。

x.insertBefore(newNode,null)와 x.appendChild(newNode)는 x에 새로운 자식 노드를 추가할 수 있습니다。

새로운 속성 추가

setAttribute() 메서드는 속성 값을 설정합니다。

속성이 존재하지 않으면 setAttribute() 새로운 속성을 생성할 수 있습니다:

인스턴스

xmlDoc.getElementsByTagName('book')[0].setAttribute("edition","제1판");

직접 시도해보세요

예제 설명:

  1. 추정하면 books.xml 로 로드되었습니다 xmlDoc
  2. 첫 번째 <book> 요소의 "edition" 속성 값을 "제1판"으로 설정합니다

주의:addAttribute()라는 메서드는 존재하지 않습니다. 속성이 존재하지 않으면 setAttribute()는 새로운 속성을 생성합니다. 속성이 이미 존재하면 setAttribute() 메서드는 기존 값을 덮어씁니다。

텍스트를 텍스트 노드에 추가 - insertData()

insertData() 메서드는 기존 텍스트 노드에 데이터를 삽입합니다。

insertData() 메서드는 두 개의 파라미터를 가집니다:

  • offset - 시작할 위치는 어디서입니까?(0부터 시작합니다)
  • string - 삽입할 문자

아래의 코드 단편은 "나의 가장 사랑하는"을 로드된 XML의 첫 번째 <title> 요소의 텍스트 노드에 추가합니다:

인스턴스

xmlDoc.getElementsByTagName("title")[0].childNodes[0].insertData(0,"나의 가장 사랑하는");

직접 시도해보세요