..

Search

20) 노드 리스트

노드 리스트


노드 리스트(node list)

노드 리스트는 getElementsByTagName() 메소드나 childNodes 속성의 속성값으로 반환되는 객체입니다.

이 객체는 XML 문서와 같은 순서대로 문서 내의 모든 노드를 리스트 형태로 저장하고 있습니다.

 

노드 리스트의 각 노드는 배열처럼 0부터 시작하는 인덱스를 이용하여 접근할 수 있습니다.

 

다음 그림은 programming_languages.xml 파일을 노드 리스트로 나타낸 그림입니다.

 

노드 리스트

 

다음 예제는 XML 문서 노드의 자식 노드를 노드 리스트 객체로 반환하는 예제입니다.

예제

nodeList = xmlObj.documentElement.childNodes;


노드 리스트의 길이

노드 리스트 객체는 노드 리스트에 노드를 추가하거나 삭제하면 자신의 상태 정보를 스스로 갱신합니다.

따라서 이 객체의 length 속성값은 언제나 노드 리스트가 저장하고 있는 노드들의 총 개수를 나타냅니다.

 

다음 예제는 XML 문서 노드의 자식 노드의 개수를 반환하는 예제입니다.

예제

nodeNum = xmlObj.documentElement.childNodes.length;


속성 리스트

요소 노드의 attributes 속성은 해당 요소 노드가 가지고 있는 모든 속성 노드를 리스트 형태로 반환합니다.

이것을 속성 리스트(named node map) 객체라고 합니다.

 

속성 리스트 객체도 노드 리스트 객체와 마찬가지로 자신의 상태 정보를 스스로 갱신합니다.

하지만 속성 리스트 객체는 노드 리스트 객체와는 달리 인덱스로는 접근할 수 없는 순서 없는 리스트(unordered list)의 형태를 가집니다.

따라서 자바스크립트에서는 이름만으로도 아이템을 선택할 수 있는 getNamedItem() 메소드를 별도로 제공합니다.

예제

xmlObj = xmlHttp.responseXML; // 요청한 데이터를 XML DOM 객체로 반환함.

// 첫 번째 <version>요소의 모든 속성을 리스트 형태로 반환함.

attrList = xmlObj.getElementsByTagName("version")[0].attributes;

document.getElementById("text").innerHTML = // 속성 리스트에서 status 속성의 값을 반환함.

"첫 번째 version 요소의 status 속성값은 " + attrList.getNamedItem("status").nodeValue + "입니다.";

코딩연습 ▶

 

위의 예제에서 사용된 programming_languages.xml 파일의 코드는 다음과 같습니다.

 

 

nodeType 프로퍼티는 해당 노드의 타입을 저장하는 프로퍼티로, 수정할 수 없는 읽기 전용 프로퍼티입니다.

연습문제