XML DOM 브라우저 차이

다른 브라우저는 XML DOM에서 공백 텍스트 노드를 처리하는 방법이 다릅니다.

예제

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

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

노드 목록의 길이 표시
이 예제는 노드 목록의 길이를 표시합니다. IE와 다른 브라우저에서는 결과가 다릅니다.
노드 간 공백 텍스트 무시
이 예제는 노드의 nodeType를 확인하고 단지 요소 노드만 처리합니다.

브라우저 간 DOM 파싱 차이

모든 현대 브라우저는 W3C DOM 표준을 지원합니다.

그러나 브라우저 간에는 차이가 있습니다. 중요한 차이점은 두 가지입니다:

  • XML 로드 방법
  • 공백과 줄 바꿈 처리 방법

XML DOM 파싱” 이 장에서는 XML을 로드하는 다른 방법을 설명했습니다.

이 장에서는 공백과 줄 바꿈을 처리하는 다른 방법을 설명하겠습니다.

DOM - 공백과 줄 바꿈

XML은 노드 사이에 줄 바꿈이나 공백 문자가 포함되어 있을 수 있습니다. 이는 단순한 편집기(예: 메모장)를 사용할 때 흔히 발생하는 상황입니다.

아래의 예제(메모장으로 편집된 것)은 행 사이에 CR/LF가 있으며, 각 서브 노드 앞에 두 개의 공백이 있습니다:

<book>
  <title>Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

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

아래의 코드 스니펫은 (books.xml의) 루트 요소가 얼마나 많은 자식 노드를 가지고 있는지 보여줍니다.

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.documentElement.childNodes;
document.write("Number of child nodes: " + x.length);

예제 설명:

  • 사용하여 loadXMLDoc() "을books.xml" xmlDoc에 로드합니다
  • 루트 요소의 자식 노드를 가져옵니다.
  • 자식 노드 수 출력

결과는 사용하는 브라우저에 따라 다릅니다. Firefox는 9를 출력하며, IE는 4를 출력합니다.

TIY

노드 간 공백 텍스트 무시

요소 노드 간의 공백 텍스트 노드를 무시하려면, 노드 타입을 확인해야 합니다. 요소 노드의 타입은 1입니다:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.documentElement.childNodes;
for (i=0;i<x.length;i++)
{ 
if (x[i].nodeType==1)
  {// 요소 노드 만 처리 
  document.write(x[i].nodeName);
  document.write("<br />");
  } 
}

예제 설명:

  • 사용하여 loadXMLDoc() "을books.xml" xmlDoc에 로드합니다
  • 루트 요소의 자식 노드를 가져옵니다.
  • 각 자식 노드의 노드 타입을 확인합니다. 노드 타입이 "1"이면, 요소 노드입니다.

TIY(간단) 또는 TIY(전체)