일반 String xml 파싱

황제낙엽 2008.11.03 13:26 조회 수 : 23 추천:103

sitelink1 http://comefeel.com/tt/comefeel/entry/St...C%EC%8B%B1 
sitelink2  
sitelink3  
sitelink4  
extra_vars4  
extra_vars5  
extra_vars6  

 

  1. 스트링을 받아서 로딩하는 방법,
  2. 파일을 로딩하는 방법.


먼저, IE를 살펴봅시다. IE에서 XML 로딩하려면, Microsoft.XMLDOM이라는 ActiveXObject를 사용하면 됩니다. 사용방법은 다음과 같습니다.

 

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = "false";
xmlDoc.loadXML(xmlString);
   or
xmlDoc.load(xmlFile);


위의 코드를 호출하고나면 xml(파일 또는 스트링)을 document의 object처럼 호출이 가능해집니다. async= false로 주는 이유는 xml파일 또는 스트링이 다 로딩된 후 다음 코드를 실행하기위해서 사용됩니다.
ActiveXObject를 사용하는 방법 외에도 CreateObject등을 사용하는 방법도 존재합니다.


Firefox에서는 document.implementation.createDocument을 통하여 XML로딩이 지원이 됩니다.

 

 

var xmlDoc = document.implementation.createDocument("", "", null);
xmlDoc.load(xmlFile);


createDocument의 첫번째 파라미터는 namespace를, 두번째 파라미터는 XML 파일에 있는 XML root element를 세번째 파라미터는 아직 구현이 되어 있지 않기 때문에 null을 넣어주면 됩니다.


※ 여기까지의 내용은 Mozilla의 Develper Center에서 본게 아니라 w3schools.com의 내용에서 가지고 왔습니다. MDC에서는 createDocument에 관한 내용 자체가 없더군요. (XUL section에서는 몇 개 있구요. 코드상에서 호출되는 것 뿐이지만)

그리고, Firefox에서 스트링으로 XML을 로딩하는 방법은 DOMParser를 이용하는 방법입니다. DOMParser는 표준이 아니기 때문에 모질라 플랫폼에서만 사용이 가능합니다.

 

 

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


PS.1 위의 결과로 xmlDoc을 생성한 값을 읽는 방법에도 여러가지가 있습니다만 다음의 방법으로 읽을 수 있습니다.

 

 

  1. 해당하는 xml 태그를 읽어온 다음에 tag.text(IE) 또는 tag.textContent(IE이외)를 사용하여 읽는 방법
  2. 해당하는 xml태그를 읽어온 다음에 tag로 감싸진 TextNode를 읽어들여서 해당하는 nodeValue로 읽는 방법

코드로 구현한다면 다음과 같이 될 것 같습니다.

 

 

// xmlDoc의 xml의 구성 <result>sample</result>
var resultTag = xmlDoc.getElementsByTagName("result")[0];
var resultText = (resultTag.text)? resultTag.text: resultTag.textContent;
   or
var resultText = resultTag.childNodes[0].nodeValue;

 

번호 제목 글쓴이 날짜 조회 수
77 [펌] 아사페릴의 사생활 - __proto__ 와 construct 와 prototype 황제낙엽 2009.04.02 23
76 [펌] 아사페릴의 사생활 - prototype과 __proto__ 와 constructor 황제낙엽 2009.04.02 41
75 [펌] 아사페릴의 사생활 - __proto__ 와 prototype에 대해.. 황제낙엽 2009.04.02 15
74 [펌] 아사페릴의 사생활 - Javascript의 클래스에 관한 이야기 황제낙엽 2009.04.02 17
73 [펌] 아사페릴의 사생활 - Javascript의 constructor 와 prototype 황제낙엽 2009.04.02 156
72 [펌] prototype (2) 황제낙엽 2009.04.02 9
71 [펌] prototype (1) 황제낙엽 2009.04.02 12
70 unshift() Method 황제낙엽 2009.03.02 287
69 javascript replaceall의 방법에 따른 처리 속도 비교 황제낙엽 2009.02.11 97
68 파이어폭스로 스크립트 디버깅하기 황제낙엽 2009.01.14 22
67 숫자 여부와 자리수를 체크 하는 예제 황제낙엽 2009.01.12 5265
66 익스플로러용 스크립트 디버거 (Script Debugger for Windows NT 4.0 and Later) 황제낙엽 2008.12.11 176
65 소숫점을 포함한 반올림 황제낙엽 2008.12.11 62
64 int * float 연산 오류 file 황제낙엽 2008.12.11 95
63 JavaScript Form Validation file 황제낙엽 2008.11.24 186
62 정규식 정리 황제낙엽 2008.11.24 252
61 setTimeout() / setInterval() 메소드 황제낙엽 2008.11.05 111
60 [key:value] 형태로 object를 저장할 수 있는 Static영역의 해쉬맵 클래스 (Map) 황제낙엽 2008.11.04 46
» String xml 파싱 황제낙엽 2008.11.03 23
58 innerHTML 황제낙엽 2008.11.03 93