XML DOM 튜토리얼로그인
XML DOM 튜토리얼
작가:php.cn  업데이트 시간:2022-04-13 15:27:56

DOM 탐색


XML DOM - 탐색 노드


노드 간의 관계를 사용하여 노드를 탐색할 수 있습니다.


DOM 노드 탐색

일반적으로 "노드 탐색"이라고 불리는 노드 간 관계를 통해 노드 트리의 노드에 액세스합니다.

XML DOM에서 노드 관계는 노드 속성으로 정의됩니다.

  • parentNode

  • childNodes

  • firstChild

  • lastChild

  • nextSibling

  • previousSibling

다음 이미지는 books.xml의 노드 트리 섹션을 보여주고 노드 간의 관계를 보여줍니다.

navigate (1).gif


DOM - 상위 노드

모든 노드에는 상위 노드가 하나만 있습니다. 다음 코드는 <book>의 상위 노드로 이동합니다.

Instance

<!DOCTYPE html>
<html>
<head>
<script src="loadxmldoc.js"> 
</script>
</head>
<body>

<script>
xmlDoc=loadXMLDoc("books.xml");

x=xmlDoc.getElementsByTagName("book")[0];
document.write(x.parentNode.nodeName);
</script>
</body>
</html>

Run Instance»

클릭 온라인 예제를 보려면 "예제 실행" 버튼

예제 설명:

  1. loadXMLDoc()을 사용하여 "books.xml"을 xmlDoc에 로드

  2. 첫 번째 <book> 요소 가져오기

  3. "x"의 상위 노드의 노드 이름 출력


빈 텍스트 노드 피하기

Firefox와 일부 다른 브라우저는 빈 공백이나 줄 바꿈을 텍스트 노드로 처리하지만 Internet Explorer는 그렇지 않습니다.

firstChild, lastChild, nextSibling, PreviousSibling 속성을 사용할 때 문제가 발생합니다.

빈 텍스트 노드(요소 노드 사이의 공백 및 줄바꿈)로 이동하는 것을 방지하기 위해 노드 유형을 확인하는 함수를 사용합니다.

function get_nextSibling(n)
{
y=n.nextSibling;
while (y.nodeType!=1)
​ {
​ y=y.nextSibling;
​ }
return y;
}

위 함수를 사용하면 node.nextSibling 속성 대신 get_nextSibling(node)를 사용할 수 있습니다. .

코드 설명:

요소 노드 유형은 1입니다. 형제 노드가 요소 노드가 아닌 경우 해당 요소 노드를 찾을 때까지 다음 노드로 이동합니다. 이렇게 하면 Internet Explorer와 Firefox 모두에서 동일한 결과를 얻을 수 있습니다.


첫 번째 하위 요소 가져오기

다음 코드는 첫 번째 <book>의 첫 번째 요소를 표시합니다.

<!DOCTYPE html>
<html>
<head>
<script src="loadxmldoc.js">
</script>
<script>
//check if the first node is an element node
function get_firstChild(n)
{
y=n.firstChild;
while (y.nodeType!=1)
  {
  y=y.nextSibling;
  }
return y;
}
</script>
</head>

<body>
<script>
xmlDoc=loadXMLDoc("books.xml");

x=get_firstChild(xmlDoc.getElementsByTagName("book")[0]);
document.write(x.nodeName);
</script>
</body>
</html>

인스턴스 실행»

온라인 인스턴스를 보려면 "인스턴스 실행" 버튼을 클릭하세요

예제 설명:

  1. loadXMLDoc()을 사용하여 "books.xml"을 xmlDoc에 로드합니다.

  2. 첫 번째 < book> 요소의 get_firstChild 함수를 사용하여 첫 번째 하위 노드(요소 노드에 속함)

  3. 첫 번째 하위 노드(요소 노드에 속함)의 노드 이름을 출력합니다. 🎜>


tryitimg.gif추가 예제

lastChild()

이 예제에서는 lastChild()를 사용합니다. 메소드 및 노드의 마지막 하위 노드를 가져오는 함수 사용자 정의

Instance

<!DOCTYPE html>
<html>
<head>
<script src="loadxmldoc.js">
</script>
<script>
//check if the first node is an element node
function get_lastChild(n)
{
y=n.lastChild;
while (y.nodeType!=1)
  {
  y=y.previousSibling;
  }
return y;
}
</script>
</head>

<body>
<script>
xmlDoc=loadXMLDoc("books.xml");

x=get_lastChild(xmlDoc.getElementsByTagName("book")[0]);
document.write(x.nodeName);
</script>
</body>
</html>

Run Instance» 온라인 인스턴스를 보려면 "인스턴스 실행" 버튼을 클릭하세요


nextSibling()

이 예제에서는 nextSibling() 메서드와 사용자 정의 함수를 사용하여 인스턴스를 가져옵니다. 노드의 다음 형제 노드

Instance

<!DOCTYPE html>
<html>
<head>
<script src="loadxmldoc.js">
</script>
<script>
//check if the first node is an element node
function get_nextSibling(n)
{
y=n.nextSibling;
while (y.nodeType!=1)
  {
  y=y.nextSibling;
  }
return y;
}
</script>
</head>

<body>
<script>
xmlDoc=loadXMLDoc("books.xml");

x=get_nextSibling(xmlDoc.getElementsByTagName("title")[0]);
document.write(x.nodeName);
</script>
</body>
</html>

인스턴스 실행»"인스턴스 실행" 버튼을 클릭하여 온라인 인스턴스 보기


previousSibling()

이 예에서는 PreviousSibling() 메서드와 사용자 정의 함수를 사용하여 노드의 이전 형제 노드를 가져옵니다.

인스턴스

<!DOCTYPE html>
<html>
<head>
<script src="loadxmldoc.js">
</script>
<script>
//check if the first node is an element node
function get_previousSibling(n)
{
y=n.previousSibling;
while (y.nodeType!=1)
  {
  y=y.previousSibling;
  }
return y;
}
</script>
</head>

<body>
<script>
xmlDoc=loadXMLDoc("books.xml");

x=get_previousSibling(xmlDoc.getElementsByTagName("price")[0]);
document.write(x.nodeName);
</script>
</body>
</html>

인스턴스 실행»온라인 인스턴스를 보려면 "인스턴스 실행" 버튼을 클릭하세요