XML DOM 노드 접근
- 이전 페이지 DOM 속성 및 메서드
- 다음 페이지 DOM 노드 정보
DOM을 통해 XML 문서의 각 노드에 접근할 수 있습니다.
예제
아래 예제에서는 XML 파일을 사용합니다 books.xml.
함수 loadXMLDoc()외부 JavaScript에서 XML 파일을 로드하는 데 사용됩니다.
- 노드 목록의 인덱스 번호를 사용하여 노드에 접근합니다
- 이 예제에서는 "books.xml" 파일의 세 번째 <title> 요소를 얻기 위해 getElementsByTagname() 메서드를 사용합니다.
- length 속성을 사용하여 요소를 순회합니다
- 이 예제에서는 "books.xml" 파일의 모든 <title> 요소를 순회하기 위해 length 속성을 사용합니다.
- 요소의 노드 타입을 확인합니다
- 이 예제에서는 "books.xml" 파일의 루트 요소의 노드 타입을 얻기 위해 nodeType 속성을 사용합니다.
- 요소 노드를 순회합니다
- 이 예제에서는 "books.xml" 파일의 요소 노드를 처리하기 위해 nodeType 속성을 사용합니다.
- 요소 노드를 순회하면서 노드 관계를 사용합니다
- 이 예제에서는 "books.xml" 파일의 요소 노드를 처리하기 위해 nodeType 속성과 nextSibling 속성을 사용합니다.
노드 접근
노드에 접근할 수 있는 세 가지 방법이 있습니다:
- getElementsByTagName() 메서드를 사용하여
- 노드 트리를 순회(순회)하여
- 노드 관계를 활용하여 노드 트리에서 탐색
getElementsByTagName() 메서드
getElementsByTagName() 메서드는 지정된 태그 이름을 가진 모든 요소를 반환합니다.
문법
node.getElementsByTagName("tagname");
예제
아래의 예제는 x 요소 아래의 모든 <title> 요소를 반환합니다:
x.getElementsByTagName("title");
위의 예제는 x 노드 아래의 <title> 요소만 반환합니다. XML 문서 전체의 모든 <title> 요소를 반환하려면 다음과 같이 사용하십시오:
xmlDoc.getElementsByTagName("title");
여기서 xmlDoc는 문서 자체(문서 노드)입니다.
DOM Node List
getElementsByTagName() 메서드는 노드 목록(노드 목록)을 반환합니다. 노드 목록은 노드의 배열입니다.
아래 코드는 getElementsByTagName() 메서드를 사용하여 노드 목록(노드 목록)을 반환합니다. 노드 목록은 노드의 배열입니다: loadXMLDoc() "을 설정합니다books.xml" xmlDoc 로 로드하고, 그런 다음 변수 x에 <title> 노드 목록을 저장합니다:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("title");
인덱스를 사용하여 x에서 <title> 요소에 접근할 수 있습니다. 세 번째 <title>에 접근하려면 다음과 같이 작성할 수 있습니다:
y=x[2];
주의사항:인덱스는 0에서 시작합니다.
이 튜토리얼의 후반 장에서 Node List에 대해 더 알아보세요.
DOM Node List Length
length 속성은 노드 목록의 길이(즉, 노드의 수)를 정의합니다.
length 속성을 사용하여 노드 목록을 반복할 수 있습니다:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("title"); for (i=0;i<x.length;i++) { document.write(x[i].childNodes[0].nodeValue); document.write("<br />"); }
예제 설명:
- 사용 loadXMLDoc() "을 설정합니다books.xml" xmlDoc 로 로드합니다
- 모든 <title> 요소 노드를 가져옵니다
- 각 <title> 요소의 텍스트 노드의 값을 출력합니다
Node Type
XML 문서의 documentElement 속성은 루트 노드입니다.
노드의 nodeName 속성은 노드의 이름입니다.
노드의 nodeType 속성은 노드의 타입입니다.
이 튜토리얼의 다음 장에서 노드 속성에 대해 더 알아보세요.
노드를 탐색합니다
아래 코드는 루트 노드의 서브 노드를 반복적으로 처리합니다. 또한 요소 노드입니다:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.documentElement.childNodes; for (i=0;i<x.length;i++) { if (x[i].nodeType==1) {// Process only element nodes (type 1) document.write(x[i].nodeName); document.write("<br />"); } }
예제 설명:
- 사용함으로써 loadXMLDoc() "을 설정합니다books.xml" xmlDoc에 로드합니다
- 루트 요소의 서브 노드를 얻습니다.
- 각 서브 노드의 노드 타입을 확인합니다. 노드 타입이 "1"이면, 요소 노드입니다.
- 요소 노드면 그 노드의 이름을 출력합니다
노드 관계를 활용하여 탐색합니다
아래의 코드는 노드 관계를 활용하여 노드 트리에서 탐색합니다:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("book")[0].childNodes; y=xmlDoc.getElementsByTagName("book")[0].firstChild; for (i=0;i<x.length;i++) { if (y.nodeType==1) {// Process only element nodes (type 1) document.write(y.nodeName + "<br />"); } y=y.nextSibling; }
- 사용함으로써 loadXMLDoc() "을 설정합니다books.xml" xmlDoc에 로드합니다
- 첫 번째 book 요소의 자식 노드를 얻습니다
- "y" 변수를 첫 번째 book 요소의 첫 번째 자식 노드로 설정합니다
- 각 자식 노드의 노드 타입을 확인하며, 노드 타입이 "1"이면 요소 노드입니다
- 요소 노드면 그 노드의 이름을 출력합니다
- "y" 변수를 다음 동급 노드로 설정하고 다시 루프를 실행합니다
- 이전 페이지 DOM 속성 및 메서드
- 다음 페이지 DOM 노드 정보