본문 바로가기
CS/개발자필수지식

[CS] 데이터포맷 - XML

by Johnny's 2023. 8. 16.

데이터포맷 - XML

XML

XML(Extensible Markup Language)은 마크업 형태를 쓰는 데이터 교환 형식

 

마크업 형태

마크업(markup)는 태그 등을 이용하여 문서나 데이터의 구조를 나타내는 방법 (속성부여도 가능)

 

구성

1. 프롤로그 : 버전, 인코딩
2. 루트요소(단 하나만)
3. 하위 요소들

<?xml version="1.0" encoding="UTF-8"?> <OSTList>
<OST like="1">
<name>마녀 배달부 키키</name> <song>따스함에 둘러쌓인다면</song>
  </OST>
  <OST like="2">
<name>하울의 움직이는 성</name> <song>세계의 약속</song> </OST>
</OSTList>

 

HTML 과 XML 비교

1. HTML의 용도는 데이터를 표시 / XML은 데이터를 저장 및 전송
2. HTML에는 미리 정의된 태그가 있지만 사용자는 XML에서 고유한 태그를 만들고 정의 가능
3. XML은 대/소문자를 구분하지만 HTML은 구분하지 않음. <book> 대신 <Book>으로 태그를 작성하면 XML 구문 분석기에서 오류가 발생

 

HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<p></p>
    <div></div>
</body>
</html>

 

XML

<?xml version="1.0" encoding="UTF-8"?> <OSTList>
<OST>
<name>마녀 배달부 키키</name> <song>따스함에 둘러쌓인다면</song> </OST>
<OST>
<name>하울의 움직이는 성</name> <song>세계의 약속</song>
  </OST>
</OSTList>

 

JSON 과 XML 비교

JSON과 비교했을 때 닫힌 태그가 계속해서 들어가기 때문에 JSON과 비교하면 무거움(XML이 많은 용량 차이)
또한 Javascript Object로 변환하기 위해서 JSON보다는 더 많은 노력이 필요(JSON은 JSON.parse()면 됨)

 

JSON

{
    "지브리OST리스트": [
        {
            "name": "마녀 배달부 키키",
            "song": "따스함에 둘러쌓인다면"
        },
        {
            "song": "세계의 약속"
        }
    ]
}

 

XML

<?xml version="1.0" encoding="UTF-8"?> <OSTList>
<OST>
<name>마녀 배달부 키키</name> <song>따스함에 둘러쌓인다면</song> </OST>
<OST>
<name>하울의 움직이는 성</name> <song>세계의 약속</song>
  </OST>
</OSTList>

 

a.js

const fs = require('fs')
const path = require('path')
var parser = require('xml2json');
let a = fs.readFileSync(path.join(__dirname,"a.xml"));
a = parser.toJson(a);
console.log(a); //{"OSTList":{"OST":[{"name":"마녀 배달부 키키","song":"따스함에 둘러쌓인다면"},{"name":"하울의 움직이는 성","song":"세계의 약속"}]}}

  

XML의 활용

- xml은 대표적으로 sitemap.xml에 쓰임
- 여러 언어에서도 독립적으로 쓰임
- itemap.xml은 서비스 내의 모든 페이지들을 리스트업한 데이터
- 사이트가 매우 크거나 서로 링크가 종속적으로 연결되지 않은 경우 크롤러가 일부 페이지를 누락하는 일이 있는데 이를 sitemap.xml이 방지하고 모든 페이지들을 크롤링할 수 있도록 해줌

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>http://www.example.com/foo.html</loc>
    <lastmod>2018-06-04</lastmod>
</url> <url>
    <loc>http://www.example.com/abc.html</loc>
    <lastmod>2018-06-04</lastmod>
  </url>
</urlset>

 

* 참고

- CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조 -인프런

댓글