XML DOM 노드 목록

getElementsByTagName() 메서드와 childNodes 속성을 통해 반환되는 노드 목록

예제

아래의 예제에서는 XML 파일을 사용합니다 books.xml.

함수 loadXMLDoc()외부 JavaScript에서 XML 파일을 로드하는 데 사용됩니다.

첫 번째 <title> 요소에서 텍스트를 가져오기
이 예제에서는 "books.xml" 파일의 첫 번째 <title> 요소에서 텍스트를 가져오기 위해 getElementsByTagName() 메서드를 사용합니다.
length 속성을 사용하여 노드를 루프하다
이 예제에서는 노드 목록과 length 속성을 사용하여 "books.xml" 파일의 모든 <title> 요소를 루프합니다.
요소의 속성을 가져오기
이 예제에서는 "books.xml" 파일의 첫 번째 <title> 요소에서 속성 목록을 사용하여 속성을 가져옵니다.

DOM 노드 목록

childNodes나 getElementsByTagName()와 같은 속성이나 메서드를 사용할 때 NodeList 객체가 반환됩니다.

NodeList 객체는 XML에서 동일한 순서로 노드 목록을 나타냅니다.

노드 목록에 노드를 접근하기 위해 0부터 시작하는 인덱스를 사용합니다.

아래의 이미지는 "를 나타냅니다}}books.xml" 중 <title> 요소의 노드 목록은 다음과 같습니다:

DOM 노드 목록

아래 코드 부분은 사용하여}} loadXMLDoc() " books.xml"를 xmlDoc에 로드하고, "를 반환합니다:books.xml" 중 title 요소의 노드 목록은 다음과 같습니다:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title");

위의 문장이 실행된 후, x는 NodeList 객체가 됩니다.

아래의 코드 스니펫은 노드 목록 x의 첫 번째 <title> 요소에서 텍스트를 반환합니다:

txt=x[0].childNodes[0].nodeValue;

위의 문장이 실행된 후, txt = "Everyday Italian"입니다.

TIY

Node List Length

NodeList 객체는 자신의 업데이트를 유지합니다. 요소를 제거하거나 추가하면 목록이 자동으로 업데이트됩니다.

노드 목록의 length 속성은 목록의 노드 수입니다.

아래 코드 부분은 사용하여}} loadXMLDoc() "books.xml" xmlDoc를 로드하고, "books.xml"에서 <title> 요소의 수를 반환합니다:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName('title').length;

위의 문장이 실행된 후, x = 4입니다.

노드 목록의 길이는 목록의 모든 요소를 순회하는 데 사용됩니다.

아래의 코드 스니펫은 length 속성을 사용하여 <title> 요소 목록을 순회합니다:

xmlDoc=loadXMLDoc("books.xml");
//x 변수는 노드 목록을 저장할 것입니다
x=xmlDoc.getElementsByTagName('title');
for (i=0;i<x.length;i++)
{
document.write(x[i].childNodes[0].nodeValue);
document.write("<br />");
}

출력:

Harry Potter
Everyday Italian
XQuery Kick Start
Learning XML

예제 설명:

  • 사용하여 loadXMLDoc() "books.xml" xmlDoc를 로드합니다
  • 모든 title 요소의 노드 목록을 저장하는 x 변수를 설정합니다.
  • 모든 <title> 요소의 텍스트 노드에서 값을 출력합니다.

TIY

DOM 속성 목록 (Named Node Map)

요소 노드의 attributes 속성은 속성 노드 목록을 반환합니다.

이는 Named Node Map라고 불리며, 메서드와 속성에 대한 일부 차이를 제외하고 노드 목록과 유사합니다.

속성 목록은 자신의 업데이트를 유지합니다. 속성을 제거하거나 추가하면 목록이 자동으로 업데이트됩니다.

아래 코드 부분은 사용하여}} loadXMLDoc() "books.xml"을 xmlDoc에 로드하고, "books.xml"의 첫 번째 <book> 요소에서 속성 노드의 목록을 반환합니다:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName('book')[0].attributes;

위 코드가 실행된 후, x.length은 속성의 개수와 같습니다. x.getNamedItem()를 사용하여 속성 노드를 반환할 수 있습니다.

아래 코드 부분은 book의 "category" 속성의 값과 속성의 개수를 출력합니다:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("book")[0].attributes;
document.write(x.getNamedItem("category").nodeValue);
document.write("<br />" + x.length);

출력:

children
1

예제 설명:

  • 사용하여 loadXMLDoc() "books.xml" xmlDoc에 로드합니다
  • x 변수를 첫 번째 <book> 요소의 모든 속성의 목록으로 설정합니다
  • "category" 속성의 값을 출력합니다
  • 속성 목록의 길이를 출력합니다

TIY