XML DOM 노드 접근
DOM을 통해 XML 문서의 모든 노드에 접근할 수 있습니다.
노드 접근
노드에 접근할 수 있는 방법은 세 가지입니다:
- getElementsByTagName() 메서드를 사용하여
- 노드 트리를 순회(순회)하여 탐색
- 노드 관계를 활용하여 노드 트리에서 탐색
getElementsByTagName() 메서드
getElementsByTagName()
지정된 태그 이름을 가진 모든 요소를 반환합니다.
문법
node.getElementsByTagName("tagname");
예제
다음 예제는 x 요소 아래의 모든 <title> 요소를 반환합니다:
x.getElementsByTagName("title");
주의하세요, 위의 예제는 x 노드 아래의 <title> 요소만 반환합니다. XML 문서에 있는 모든 <title> 요소를 반환하려면 다음과 같이 사용하세요:
xmlDoc.getElementsByTagName("title");
여기서는,xmlDoc
즉 문서 자체(문서 노드).
DOM 노드 목록
getElementsByTagName()
方法返回节点列表(node list)。节点列表是节点的数组。
method returns a node list (node list). 노드 목록은 노드의 배열입니다.
메서드는 노드 목록(node list)을 반환합니다. 노드 목록은 노드의 배열입니다.
x = xmlDoc.getElementsByTagName("title");
y = x[2];주의:
인덱스는 0에서 시작합니다.
length
DOM 노드 목록 길이
속성을 사용하여 노드 목록의 길이(노드 수)를 정의할 수 있습니다. length
속성을 사용하여 노드 목록을 반복적으로 탐색할 수 있습니다:
예제
var x = xmlDoc.getElementsByTagName("title"); for (i = 0; i < x.length; i++) { // 각 노드를 처리하는 코드를 여기에 작성할 수 있습니다 }
노드 타입
XML 문서의 documentElement
속성은 루트 노드입니다.
속성은 노드의 nodeName
속성은 노드 이름입니다.
속성은 노드의 nodeType
속성은 노드의 타입입니다.
이 튜토리얼의 다음 장에서 노드 속성에 대해 더 알 수 있습니다.
노드 탐색
아래 코드는 루트 노드의 자식 노드(요소 노드)를 반복적으로 탐색합니다:
예제
txt = ""; x = xmlDoc.documentElement.childNodes; for (i = 0; i < x.length; i++) { // 요소 노드(타입 1)만 처리 if (x[i].nodeType == 1) { txt += x[i].nodeName + "<br>"; } }
예제 설명:
- " 을(를) 로드했는지 확인하세요books.xml" 로 로드된
xmlDoc
- 루트 요소(xmlDoc)의 자식 노드를 가져옵니다
- 각 자식 노드의 노드 타입을 확인합니다. 노드 타입이 "
1
"이면 요소 노드입니다 - 요소 노드이면, 노드 이름을 출력합니다
노드 관계 탐색
아래 코드는 노드 관계를 활용하여 노드 트리에서 탐색합니다:
예제
x = xmlDoc.getElementsByTagName("book")[0]; xlen = x.childNodes.length; y = x.firstChild; txt = ""; for (i = 0; i < xlen; i++) { // 요소 노드(타입 1)만 처리 if (y.nodeType == 1) { txt += y.nodeName + "<br>"; } y = y.nextSibling; }
예제 설명:
- " 을(를) 로드했는지 확인하세요books.xml" 로 로드된
xmlDoc
- 첫 번째 book 요소의 자식 노드를 가져오기
- "y" 변수를 첫 번째 book 요소의 첫 번째 자식 노드로 설정합니다
- 각 자식 노드(첫 번째 자식 노드 "
y
" 시작): - 각 자식 노드의 노드 타입을 확인합니다. 노드 타입이 "
1
"이면, 그것은 요소 노드입니다 - 요소 노드라면, 해당 노드의 이름을 출력합니다
- "을 설정합니다
y
" 변수를 다음 동급 노드로 설정하고 다시 루프를 실행합니다