일반 String xml 파싱

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

 

  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;

 

번호 제목 글쓴이 날짜 조회 수
246 [Gemini] ajax 와 fetch 의 차이 황제낙엽 2025.01.04 3419
245 [검토 완료] 디바이스 카메라로 촬영한 사진을 서버에 업로드하기 샘플 황제낙엽 2024.11.21 3988
244 브라우저에서 이미지를 편집(crop 등) 할 수 있는 오픈소스 Cropper.js 황제낙엽 2024.11.16 3842
243 [ChatGPT] json data 의 정렬 [1] 황제낙엽 2024.07.23 3357
242 DOMContentLoaded 이벤트와 window.onload 이벤트 황제낙엽 2024.07.15 3673
241 fetch() 사용 예제들 황제낙엽 2024.07.09 3382
240 [Copilot] Vanilla JavaScript에서 외부 스크립트 파일에 정의된 함수들을 로드 황제낙엽 2024.06.21 3759
239 [Copilot] ES6 모듈(module) 문법 황제낙엽 2024.06.21 3812
238 [Copilot] JSON 객체 내부 데이터를 순회하면서 조회하는 코드 황제낙엽 2024.06.02 3272
237 [Copilot] JavaScript로 서버에 특정 값을 POST 방식으로 전달하고 응답을 기다리지 않고 바로 종료 황제낙엽 2024.05.31 3620
236 json 데이터 내의 변수명에 prefix 로 type 표현하기 황제낙엽 2024.04.15 3363
235 fetch() 함수 사용 예제 file 황제낙엽 2023.11.23 3607
234 현재 document 의 host 와 port 를 얻는 방법 황제낙엽 2023.10.03 4211
233 (Bard) FileReader 로 여러개의 파일을 read 하는 법 file 황제낙엽 2023.08.23 3665
232 How to build a file upload service with vanilla JavaScript file 황제낙엽 2023.08.22 3715
231 (Bard) JavaScript로 JSON 배열을 작성하는 방법 황제낙엽 2023.08.21 3674
230 모바일 브라우저에서 file input element 를 이용하여 여러장의 이미지를 서버에 전송하려 할때 [1] 황제낙엽 2023.08.21 3704
229 navigator.mediaDevices 황제낙엽 2023.08.21 3799
228 Barcode Detection API 황제낙엽 2023.08.06 3859
227 정규식을 이용한 이메일 검증 스크립트 file 황제낙엽 2023.06.25 2895