Coding/etc

[Javascript] 웹 브라우저에서 XML 파싱하기

junedev 2019. 9. 18. 17:52

Javascript로 XML 파싱하기

대부분의 웹 브라우저에서는 XML parser를 지원합니다. XML DOM은 XML에 접근하여 조작할 수 있는 기능을 포함하고 있습니다.
XML parser는 XML 데이터를 받아들여(String이든 평문이든) XML DOM 객체로 변환시켜 줍니다.
이를 통해 Javascript를 이용하면 웹 브라우저에서도 XML을 파싱할 수가 있습니다.

Xml DOM 예제

간단하게 짧은 XML 데이터를 받아들여 원하고자 하는 태그의 text를 출력하는 예제입니다.

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <title>XML Parser</title>
    <script>
        function parseText() {
            var xmlText, xmlParser, xmlDoc;
            xmlText = "<country><name>korea</name>" +
                "<capital>seoul</capital></country>"
            xmlParser = new DOMParser();
            xmlDoc = xmlParser.parseFromString(xmlText, "text/xml");
            document.getElementById("text").innerHTML =
                xmlDoc.getElementsByTagName("name")[0].childNodes[0].nodeValue
                + "의 수도는 " +
                xmlDoc.getElementsByTagName("capital")[0].childNodes[0].nodeValue + " 입니다.";
        }
    </script>
</head>

<body>
    <h1>문자열 파싱</h1>
    <button onclick="parseText()">파싱하기!</button>
    <p id="text"></p>
</body>

</html>

xmlText라는 문자열에 XML 데이터가 들어가 있습니다.

이를 DOMParser를 이용하여 XML DOM 형태로 변환시켜 줍니다.

이제 parseFromString() 메소드를 통해 문자열을 xml 형식으로 바꾸어 준 뒤, 이를 xmlDoc에 저장합니다.

이제는 xmlDoc을 통해 노드, 노드의 text등에 접근할 수 있습니다.

간단하게 'name' 'capital' 두 가지 태그로 검색하여 간단한 문자열을 출력해 주는 코드입니다.

childNodes[] 배열은 해당 노드의 자식 노드들이 들어가 있으며, 현재 xml 데이터의 경우 자식 노드가 1개씩 밖에 없기 때문에

0으로 접근합니다. 이렇게 인덱스로도 자식 노드들에 접근할 수가 있으며, text값은 nodeValue로 얻을 수 있습니다.

실행 결과는 다음과 같습니다. 아래 버튼을 눌러보세요.



XML Parser

문자열 파싱