javascript / xml parsing / 파싱 / 예제

2016.01.05 11:46language/javascript

 

string 형태의 xml text를  xml로 parsing하는 기본적인 예제이다.

 

 

 

<script>
 
var txt = 
'<rss>'
  +'<item>'
      +'<name>이름아무거나</name>'
      +'<age>26</age>'
  +'</item>'
+'</rss>';
 
 
parser=new DOMParser();
 
   xmlDoc=parser.parseFromString(txt,"text/xml");
 
   // 특정 테그를 기준으로 변수에 담는다
   var xml = xmlDoc.getElementsByTagName('rss');
 
// getElementsByTagName : 태그 호출
// childNodes : 자식 노드
// nodeValue : 해당 노드의 값(text)
var name = xml[0].getElementsByTagName('item')[0].getElementsByTagName('name')[0].childNodes[0].nodeValue;
 
alert(name);
 
</script>
cs

 

위 방법은 java에서 URLConnection을 통해서 xml정보들을 가져와서

txt 변수에 넣어주고 스크립트로 xml 파싱을 하기 위해서 작성되었다.

( URLConnection : http://cofs.tistory.com/4 )

 

 

파싱하는데는 여러가지 방법이 있다.

브라우저 별로도 각기 다른 방법들이 있는데

현재 ie 11, chrome(크롬)은 위의 소스로 구분없이 사용이 가능한걸로 판단된다.

 

xml파일을 파싱하는 방법도 위와 크게 다르지 않다. 

  • 프로필사진
    dd2017.11.29 05:25

    저는 공공데이터에서 제공하는 도시코드api를 사용하려는데요
    문자열 자르기 이전에 xml을 가져와서 그대로 뿌려주는 코드를 작성했는데
    이상하게 작동을 안합니다.
    한번 봐주실 수 있을까요?


    <Html>
    <head></head>
    <script>
    function searchBusLaneAJAX() {
    var xhr = new XMLHttpRequest();
    var url = 'http://openapi.tago.go.kr/openapi/service/ArvlInfoInqireService/getCtyCodeList?serviceKey=A2C6WKuZwdEx08OODGH2clmfQCkFMypGQMfr5pt4M1EXiVfgzdi1Ek%2Ff4Uu1026jycb2MSyg9LEyCxrfhbENvg%3D%3D';
    xhr.open('GET', url, true);
    xhr.send();
    document.getElementById("resultDiv").innerHTML = xhr.responseText;
    }
    </script>
    <body>
    <div>
    <button onclick="searchBusLaneAJAX();">click</button>
    </div>
    <div id="resultDiv">
    </div>
    </body>
    </Html>

    • 프로필사진
      Favicon of https://cofs.tistory.com BlogIcon 개발자 CofS2017.11.29 09:18 신고

      XMLHttpRequest 는 비동기로 사용해야 합니다.

      xhr.open('GET', url, true);

      xhr.onreadystatechange = function (aEvt) {
      if (xhr.readyState == 4) {
      if(xhr.status == 200)
      document.getElementById("resultDiv").innerHTML = xhr.responseText;
      else
      alert("Error loading page");
      }
      };
      xhr.send();

      이런식으로 작성해 보시기 바래요 ㅎㅎ