XML DOM 브라우저 차이
- 이전 페이지 DOM 노드 탐색
- 다음 페이지 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를 출력합니다.
노드 간 공백 텍스트 무시
요소 노드 간의 공백 텍스트 노드를 무시하려면, 노드 타입을 확인해야 합니다. 요소 노드의 타입은 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"이면, 요소 노드입니다.
- 이전 페이지 DOM 노드 탐색
- 다음 페이지 DOM 정위치 노드