2007. 3. 28. 10:36 programing/javascript
XMLDOM 이용하기
IE에서 간단히 Javascript로 XML 데이터 불러오고 사용하는 방법으로 난 Microsoft의 XMLDOM ActiveX를 이용한다.
우선 Mucrosoft.XMLDOM 객체 생성해보자.
<script>
var XmlDOM = new ActiveXObject("Microsoft.XMLDOM");
XmlDOM.async = false;
</script>
음.. async를 false로 하는 이유는 웹페이지에서 데이터 가져와서 뿌려줄때 async, 즉 비동기화 할 필요가 없기 때문이고 비동기화로 할 때 생기는 문제를 감당할 자신이 없어서이다.
자 일단 XmlDOM 이라는 객체는 생성했다.
그럼 원하는 xml 데이터를 가져와야 한다.
XmlDOM 객체에서는 load 라는 method로 xml 데이터를 가져올 수 있다.
<script>
XmlDOM.load(http://www.nzeo.com/test.php);
</script>
뭐 이렇게 하면 일단 읽어온다.
예를 들어 xml 데이터가 다음과 같이 있다고 하자.
<ROOT>
<DATA1>1번데이터</DATA1>
<DATA2>2번데이터</DATA2>
</ROOT>
뭐... 굳이 sample에 신경쓰지 말고...
그럼 이 DATA1, DATA2를 javascript에서 사용할 수 있게 변수에 차곡 차곡 담아보자.
<script>
var data1 = XmlDOM.selectNodes("/ROOT/DATA1")(0).text;
</script>
이렇게 하면 된다.
XmlDOM 에서 selectNodes 라는 method를 지원한다.
원하는 path를 넣어서 가져오게 하면 된다.
그런데 바로 값을 가져오지는 않는다.
해당 path에 대한 또 하나의 객체를 return한다.
이거 보면 대략 loop도 돌릴 수 있겠고 text value뿐 아니라 다른 값도 가져올 수 있겠구나 하는 생각이 들것이다.
레퍼런스를 찾다가 이래 저래 삽질해서 아래와 같은 코드를 만들었다.
■ XML data
<?xml version="1.0" encoding="KS_C_5601-1987"?>
<ROOT>
<LIST>
<TITLE>첫번째 글입니다.</TITLE>
<AUTHOR>작성자1</AUTHOR>
</LIST>
<LIST>
<TITLE>두번째 글입니다.</TITLE>
<AUTHOR>작성자2</AUTHOR>
</LIST>
<LIST>
<TITLE>세번째 글입니다.</TITLE>
<AUTHOR>작성자3</AUTHOR>
</LIST>
<LIST>
<TITLE>네번째 글입니다.</TITLE>
<AUTHOR>작성자4</AUTHOR>
</LIST>
<LIST>
<TITLE>다섯번째 글입니다.</TITLE>
<AUTHOR>작성자5</AUTHOR>
</LIST>
</ROOT>
■ 위 XML 데이터 가져와서 걍 출력하기
<html>
<head>
</head>
<body>
<script>
var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
xmldoc.async = false;
xmldoc.load("./test.xml");
var list =xmldoc.selectNodes("/ROOT/LIST");
var cnt = list.length;
for(var i=0;i<cnt;i++) {
var title = list(i).selectNodes("TITLE")(0).text;
var author = list(i).selectNodes("AUTHOR")(0).text;
document.writeln(i+". "+"제목 : "+title+" , 글쓴이 : "+author+"<br />");
}
</script>
</body>
</html>
사실.. xml 데이터를 가져온 후에 xsl을 이용해서 매우 간편하고도 강력하게 display를 해주는 것이 좋다.
하지만 xsl관련 library들이 사용자 pc에 확실히 있다고 보장을 할 수 가 없다.
다행이 xmldom의 경우 모질라등에서도 지원한다고 하니 그 사용폭이 더 넓어 질 것이다. ^^