저번 GET / POST 메소드의 차이점을 학습하면서 최종적으로 Soap API를 학습하기 위해 XML 를 학습하려고 한다.
결국은 XML 기반 API를 호출하는 기능이 궁금해서 이것 저것 찾아봤다.
XML(Extensible Markup Language) 이란?
XML를 사용하면 공유 가능한 방식으로 데이터를 정의하고 저장할 수 있습니다. XML은 웹 사이트, 데이터베이스 및 애플리케이션과 같은 컴퓨터 시스템 간의 정보 교환을 지원합니다. 사전 정의된 규직을 사용하면 수신자가 이러한 규칙을 사용하여 데이터를 효율적으로 정확하게 익을 수 있으므로 모든 네트워크에서 데이터를 XML파일로 손쉽게 전송할 수 있습니다.
XML설계 목적
W3C에 의하면 XML은 다음과 같은 목적으로 설계되었습니다.
- XML은 인터넷상에서 명확하게 사용할 수 있어야 합니다.
- XML은 다양한 응용프로그램을 지원해야 합니다.
- XML은 SGML과 호환되어야 합니다.
- XML 문서를 처리하는 프로그램은 손쉽게 작성될 수 있어야 합니다.
- XML에서 제공하는 옵션의 수는 최소한으로 유지되어야 합니다.
- XML은 문서는 인간이 읽을 수 있어야 하며, 의마가 명확해야 합니다.
- XML의 설계는 빠르게 이루어져야 합니다.
- XML의 설계는 공식적이면서 간결해야 합니다.
- XML문서는 작성하기 쉬어야 합니다.
- XML 마크업의 간결성은 그다지 중요하지 않습니다.
즉, 서로 호환되지 않는 데이터 타입을 사용하는 시스템 간의 데이터 교환에는 많은 시간과 노력이 발생합니다.
또한, 이렇게 데이터를 변환하는 과정에서 데이터의 손실이 발생하는 경우도 종종 있습니다.
하지만 XML은 데이터를 텍스트 형식으로 저장하므로, 스프트웨어나 하드웨어에 독립적으로 데이터를 저장하고 전달할 수 있습니다. 따라서 XML을 사용하면 새로운 운영체제나 프로그램, 브라우저 등에 상관없이 데이터를 안전하고 손쉽게 전달 할 수 있습니다.
HTML로 부터 데이터 분리
HTML문서의 데이터를 XML 파일로 따로 저장할 수 있습니다.
이러한 데이터는 몇 줄자의 자바스크립트 코드로도 간단히 읽어 들일 수 있으며, HTML문서 내에서 불러온 데이터를 손쉽게 이용할 수 있습니다.
function loadDoc() {
var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function() {
if(this.status == 200 && this.readyState == this.DONE) {
displayData(xmlHttp);
}
};
xmlHttp.open("GET", "/examples/media/korean_major_cities.xml", true);
xmlHttp.send();
}
function displayData(xmlHttp) {
var xmlObj, cityList, result, idx;
xmlObj = xmlHttp.responseXML; // 요청한 데이터를 XML DOM 객체로 반환함.
result = "<table><tr><th>도시 이름</th><th>행정구역</th></tr>";
cityList = xmlObj.getElementsByTagName("city");
for(idx = 0; idx < cityList.length; idx++) {
result += "<tr><td>" +
cityList[idx].getElementsByTagName("name")[0].childNodes[0].nodeValue + "</td><td>" +
cityList[idx].getElementsByTagName("class")[0].childNodes[0].nodeValue + "</td></tr>";
}
result += "</table>";
document.getElementById("text").innerHTML = result;
}
korean_major_cities.xml
<?xml version="1.0" encoding="UTF-8"?>
<korean_cities>
<city>
<name>서울</name>
<class>특별시</class>
</city>
<city>
<name>부산</name>
<class>광역시</class>
</city>
<city>
<name>인천</name>
<class>광역시</class>
</city>
<city>
<name>대전</name>
<class>광역시</class>
</city>
<city>
<name>광주</name>
<class>광역시</class>
</city>
<city>
<name>대구</name>
<class>광역시</class>
</city>
<city>
<name>울산</name>
<class>광역시</class>
</city>
<city>
<name>수원</name>
<class>시</class>
</city>
<city>
<name>청주</name>
<class>시</class>
</city>
<city>
<name>목포</name>
<class>시</class>
</city>
</korean_cities>
'학습' 카테고리의 다른 글
Spring SOAP API (0) | 2023.05.10 |
---|---|
XML API ?? (0) | 2023.04.28 |
GET 과 POST의 차이 (0) | 2023.04.25 |
서버, 클라이언트와 웹 서비스 (0) | 2023.04.24 |
TCP/IP 데이터 통신 (0) | 2023.04.24 |