XML DOM 분석

대부분의 브라우저는 XML을 읽고 작업하는 XML 파서를 내장하고 있습니다.

파서는 XML을 JavaScript가 접근할 수 있는 객체로 변환합니다.

예제

CodeW3C.com에서 제공하는 예제는 브라우저와 플랫폼에 따라 독립적입니다. 이 예제는 모든 현대 브라우저에서 실행할 수 있습니다.

XML 파일을 로드하고 파싱
XML 문자열을 로드하고 파싱

XML 파싱

모든 현대 브라우저는 XML을 읽고 작업하는 XML 파서를 내장하고 있습니다.

파서는 XML을 메모리에 읽고, JavaScript가 접근할 수 있는 XML DOM 객체로 변환합니다.

마이크로소프트의 XML 파서는 다른 브라우저의 파서와 차이가 있습니다. 마이크로소프트의 파서는 XML 파일과 XML 문자열(텍스트)을 로드하는 데 지원하며, 다른 브라우저는 별도의 파서를 사용합니다. 그러나 모든 파서는 XML 트리를 순회하며, 노드에 접근, 삽입 및 제거하는 함수를 포함하고 있습니다.

이 튜토리얼에서는 IE 및 다른 브라우저에서 실행할 수 있는 스크립트를 만드는 방법을 설명할 것입니다.

마이크로소프트의 XML 파서를 통해 XML을 로드합니다.

마이크로소프트의 XML 파서는 인터넷 익스플로러 5 이상에서 내장되어 있습니다.

아래 JavaScript 스크립트는 XML 문서 ("books.xml) 분석기를 로드했습니다:

xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load("books.xml");

코드 설명:

  • 첫 번째 행은 비어 있는 마이크로소프트 XML 문서 객체를 생성합니다.
  • 두 번째 줄은 비동기 로드를 종료하여, 문서가 완전히 로드되기 전에 분석기가 스크립트를 계속 실행하지 않도록 합니다
  • 세 번째 줄은 분석기에 "books.xml"이라는 문서를 로드하도록 지시합니다

아래 JavaScript 스크립트는 "txt"라는 문자열을 분석기에 로드합니다:

xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.loadXML(txt);

주의:loadXML() 메서드는 문자열(텍스트)을 로드하는 데 사용되며 load() 파일을 로드하는 데 사용됩니다。

Firefox 및 다른 브라우저에서의 XML 분석기

아래 JavaScript 스크립트는 XML 문서 ("books.xml) 분석기를 로드했습니다:

xmlDoc=document.implementation.createDocument("","",null);
xmlDoc.async="false";
xmlDoc.load("books.xml");

코드 설명:

  • 첫 번째 줄은 비어 있는 XML 문서 객체를 생성합니다
  • 두 번째 줄은 비동기 로드를 종료하여, 문서가 완전히 로드되기 전에 분석기가 스크립트를 계속 실행하지 않도록 합니다
  • 세 번째 줄은 분석기에 "books.xml"이라는 문서를 로드하도록 지시합니다

아래 JavaScript 스크립트는 "txt"라는 문자열을 분석기에 로드합니다:

parser=new DOMParser();
xmlDoc=parser.parseFromString(txt,"text/xml");

코드 설명:

  • 첫 번째 줄은 비어 있는 XML 문서 객체를 생성합니다
  • 두 번째 줄은 분석기에 "txt"라는 문자열을 로드하도록 지시합니다

주의:Internet Explorer는 loadXML() 메서드를 사용하여 XML 문자열을 분석하며, 다른 브라우저는 DOMParser 객체.

XML 파일 분석 - 다양한 브라우저에서 사용 가능한 예제

아래 예제는 XML 문서 ("books.xml) XML 분석기를 로드합니다:

<html>
<body>
<script type="text/javascript">
try //Internet Explorer
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  }
catch(e)
  {
  try //Firefox, Mozilla, Opera 등
    {
    xmlDoc=document.implementation.createDocument("","",null);
    }
  catch(e) {alert(e.message)}
  }
try 
  {
  xmlDoc.async=false;
  xmlDoc.load("books.xml");
  document.write("xmlDoc is loaded, ready for use");
  }
catch(e) {alert(e.message)}
</script>
</body>
</html>

TIY

오류: 도메인 간 접근

보안상의 이유로, 현대의 브라우저는 다른 도메인 간의 접근을 허용하지 않습니다.

이는 웹 페이지와 그가 로드하려는 XML 파일이 같은 서버에 있어야 한다는 것을 의미합니다.

CodeW3C.com의 예제에서 열린 XML 파일은 CodeW3C.com 도메인에 위치합니다.

위 예제를 자신의 웹 페이지에서 사용하려면, XML 파일을 자신의 서버에 배치해야 합니다. 그렇지 않으면 xmlDoc.load()는 "Access is denied" 오류를 발생시킵니다.

XML 문자열 분석 - 다양한 브라우저에서 사용 가능한 예제

아래 코드는 XML 문자열을 로드하고 분석한 것입니다:

<html>
<body>
<script type="text/javascript">
text="<bookstore>"
text=text+"<book>";
text=text+"<title>Harry Potter</title>";
text=text+"<author>J K. Rowling</author>";
text=text+"<year>2005</year>";
text=text+"</book>";
text=text+"</bookstore>";
try //Internet Explorer
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async="false";
  xmlDoc.loadXML(text);
  }
catch(e)
  {
  try //Firefox, Mozilla, Opera 등
    {
    parser=new DOMParser();
    xmlDoc=parser.parseFromString(text,"text/xml");
    }
  catch(e) {alert(e.message)}
  }
document.write("xmlDoc is loaded, ready for use");
</script>
</body>
</html>

TIY

주의:Internet Explorer는 loadXML() 메서드를 사용하여 XML 문자열을 파싱하며, 다른 브라우저는 DOMParser 객체.