XML DOM - 노드 액세스
DOM을 사용하면 XML 문서의 모든 노드에 액세스할 수 있습니다.
직접 해보십시오 - 예
아래 예에서는 XML 파일 books.xml 을 사용합니다 .
getElementsByTagName() 메서드를 사용하여 "books.xml"에서 세 번째 <title> 요소 가져오기
을 사용하여 "books.xml"의 모든 <title> 요소를 반복합니다.
nodeType 속성을 사용하여 "books.xml"에 있는 루트 요소의 노드 유형을 가져옵니다.
"books.xml"의 요소 노드만 처리하려면 nodeType 속성을 사용하십시오.
합니다. nodeType 속성과 nextSibling 속성을 사용하여 "books.xml"의 요소 노드를 처리합니다.
노드 액세스
다음 세 가지 방법으로 노드에 액세스할 수 있습니다.
1. getElementsByTagName() 메서드를 사용하여
2. 노드 트리를 순회(순회)함으로써.
3. 노드 관계를 사용하여 노드 트리를 탐색합니다.
getElementsByTagName() 메서드
getElementsByTagName()은 지정된 태그 이름을 가진 모든 요소를 반환합니다.
통사론
node.getElementsByTagName("tagname");
예시
다음 예제에서는 x 요소 아래의 모든 <title> 요소를 반환합니다.
x.getElementsByTagName("title");
위의 예는 x 노드 아래에 <title> 요소만 반환합니다. XML 문서의 모든 <title> 요소를 반환하려면 다음을 사용하십시오.
xmlDoc.getElementsByTagName("title");
여기서 xmlDoc은 문서 자체(문서 노드)입니다.
DOM 노드 목록
getElementsByTagName() 메서드는 노드 목록을 반환합니다. 노드 목록은 노드의 배열입니다.
x = xmlDoc.getElementsByTagName("title");
x의 <title> 요소는 인덱스 번호로 액세스할 수 있습니다. 세 번째 <title>에 액세스하려면 다음과 같이 작성할 수 있습니다.
y = x[2];
참고: 인덱스는 0에서 시작합니다.
이 튜토리얼의 뒷부분에서 노드 목록에 대해 자세히 알아볼 것입니다.
DOM 노드 목록 길이
length 속성은 노드 목록의 길이(노드 수)를 정의합니다.
length 속성을 사용하여 노드 목록을 반복할 수 있습니다.
예시
var
x = xmlDoc.getElementsByTagName("title");
for (i = 0; i <x.length; i++) {
//
do something for each node
}
노드 유형
XML 문서 의 documentElement 속성은 루트 노드입니다.
노드 의 nodeName 속성은 노드의 이름입니다.
노드 의 nodeType 속성은 노드의 유형입니다.
이 튜토리얼의 다음 장에서 노드 속성에 대해 자세히 알아볼 것입니다.
노드 순회
다음 코드는 루트 노드의 요소 노드이기도 한 자식 노드를 반복합니다.
예시
txt = "";
x = xmlDoc.documentElement.childNodes;
for (i = 0; i <x.length; i++)
{
// Process only element nodes (type 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++)
{
// Process only element nodes (type 1)
if (y.nodeType == 1) {
txt += y.nodeName + "<br>";
}
y = y.nextSibling;
}
설명된 예:
- " books.xml "을 xmlDoc에 로드했다고 가정합니다.
- 첫 번째 book 요소의 자식 노드 가져오기
- "y" 변수를 첫 번째 book 요소의 첫 번째 자식 노드로 설정합니다.
- 각 자식 노드에 대해(첫 번째 자식 노드 "y"로 시작):
- 노드 유형을 확인하십시오. 노드 유형이 "1"이면 요소 노드입니다.
- 요소 노드인 경우 노드 이름을 출력합니다.
- "y" 변수를 다음 형제 노드로 설정하고 루프를 다시 실행합니다.