XML vs JSON


๐Ÿ’ก JSON

JSON์€ JavaScript Object Notation์˜ ์•ฝ์ž์ด๋‹ค.

JSON์€ ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜์˜ ๋ฐ์ดํ„ฐ ๊ตํ™˜ ํ‘œ์ค€์ด๋‹ค.

์ด๋Ÿฌํ•œ JSON์€ XML์˜ ๋Œ€์•ˆ์œผ๋กœ์„œ ์ข€ ๋” ์‰ฝ๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•˜๊ณ 

์ €์žฅํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ๊ณ ์•ˆ๋˜์—ˆ๋‹ค. ๋˜ํ•œ JSON์€ ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜์ด๋ฏ€๋กœ

์–ด๋– ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ๋„ JSON๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.



๐Ÿ’ก JSON์˜ ํŠน์ง•

๏ผ‘. JSON์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ™•์žฅํ•˜์—ฌ ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค.

๏ผ’. JSON์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด ํ‘œ๊ธฐ๋ฒ•์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

๏ผ“. JSON์€ ์‚ฌ๋žŒ๊ณผ ๊ธฐ๊ณ„๊ฐ€ ๋ชจ๋‘ ์ฝ๊ธฐ ํŽธํ•˜๋„๋ก ๊ณ ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๏ผ”. JSON์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€ ์šด์˜์ฒด์ œ์— ๋…๋ฆฝ์ ์ž…๋‹ˆ๋‹ค.



๐Ÿ’ก XML

XML์€ EXtensible Markup Language์˜ ์•ฝ์ž์ด๋‹ค.

XML์€ HTML๊ณผ ๋งค์šฐ ๋น„์Šทํ•œ ๋ฌธ์ž ๊ธฐ๋ฐ˜์˜ ๋งˆํฌ์—… ์–ธ์–ด(text-based markup language)์ž…๋‹ˆ๋‹ค.

์ด ์–ธ์–ด๋Š” ์‚ฌ๋žŒ๊ณผ ๊ธฐ๊ณ„๊ฐ€ ๋™์‹œ์— ์ฝ๊ธฐ ํŽธํ•œ ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ XML์€ HTML์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๋ชฉ์ ์ด ์•„๋‹Œ, ๋ฐ์ดํ„ฐ๋ฅผ

์ €์žฅํ•˜๊ณ  ์ „๋‹ฌํ•  ๋ชฉ์ ์œผ๋กœ๋งŒ ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, XML ํƒœ๊ทธ๋Š”

HTML ํƒœ๊ทธ์ฒ˜๋Ÿผ ๋ฏธ๋ฆฌ ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



๐Ÿ’ก XML์˜ ํŠน์ง•

๏ผ‘. XML์€ ๋‹ค๋ฅธ ๋ชฉ์ ์˜ ๋งˆํฌ์—… ์–ธ์–ด๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋‹ค๋ชฉ์  ๋งˆํฌ์—… ์–ธ์–ด์ž…๋‹ˆ๋‹ค.

๏ผ’. XML์€ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ๋ผ๋ฆฌ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์†์‰ฝ๊ฒŒ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค๋‹ˆ๋‹ค.

๏ผ“. XML์€ ์ƒˆ๋กœ์šด ํƒœ๊ทธ๋ฅผ ๋งŒ๋“ค์–ด ์ถ”๊ฐ€ํ•ด๋„ ๊ณ„์†ํ•ด์„œ ๋™์ž‘ํ•˜๋ฏ€๋กœ, ํ™•์žฅ์„ฑ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๏ผ”. XML์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์—ฌ์ฃผ์ง€ ์•Š๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ณ  ์ €์žฅํ•˜๋Š” ๊ฒƒ๋งŒ์„ ๋ชฉ์ ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

๏ผ•. XML์€ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ ํ˜•์‹์˜ ์–ธ์–ด๋กœ ๋ชจ๋“  XML ๋ฌธ์„œ๋Š” ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.



๐Ÿ’ก XML๊ณผ JSON์˜ ๊ณตํ†ต์ 

๏ผ‘. ๋‘˜ ๋‹ค ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๏ผ’. ๋‘˜ ๋‹ค ๊ธฐ๊ณ„๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‚ฌ๋žŒ๋„ ์‰ฝ๊ฒŒ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๏ผ“. ๋‘˜ ๋‹ค ๊ณ„์ธต์ ์ธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

๏ผ”. ๋‘˜ ๋‹ค ๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ์˜ํ•ด ํŒŒ์‹ฑ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๏ผ•. ๋‘˜ ๋‹ค XMLHttpRequest ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•˜์—ฌ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†ก๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



๐Ÿ’ก XML๊ณผ JSON์˜ ์ฐจ์ด์ 

๏ผ‘. JSON์€ ์ข…๋ฃŒ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๏ผ’. JSON์˜ ๊ตฌ๋ฌธ์ด XML์˜ ๊ตฌ๋ฌธ๋ณด๋‹ค ๋” ์งง์Šต๋‹ˆ๋‹ค.

๏ผ“. JSON ๋ฐ์ดํ„ฐ๊ฐ€ XML ๋ฐ์ดํ„ฐ๋ณด๋‹ค ๋” ๋นจ๋ฆฌ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๏ผ”. XML์€ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์ง€๋งŒ, JSON์€ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๏ผ•. XML์€ XML ํŒŒ์„œ๋กœ ํŒŒ์‹ฑ๋˜๋ฉฐ, JSON์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œ์ค€ ํ•จ์ˆ˜์ธ eval() ํ•จ์ˆ˜๋กœ ํŒŒ์‹ฑ๋œ๋‹ค.

ex)

# XML
<dog>
    <name>์‹๋นต</name>
    <family>์›ฐ์‹œ์ฝ”๊ธฐ<family>
    <age>1</age>
    <weight>2.14</weight>
</dog>

# JSON
{
    "name": "์‹๋นต",
    "family": "์›ฐ์‹œ์ฝ”๊ธฐ",
    "age": 1,
    "weight": 2.14
}


ํŒŒ์‹ฑ(parsing) & ํŒŒ์„œ(parser)

ํŒŒ์‹ฑ์ด๋ž€ ํŠน์ •๋ฌธ์„œ(XML ๋”ฐ์œ„)๋ฅผ ์ฝ์–ด ๋“ค์—ฌ์„œ ์ด๋ฅผ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์ด๋‚˜ ์„œ๋ธŒ๋ฃจํ‹ด์ด

์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‚ด๋ถ€์˜ ํ‘œํ˜„๋ฐฉ์‹์œผ๋กœ ๋ณ€ํ™˜์‹œ์ผœ ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

XML ๋ฌธ์„œ๋ฅผ ๋ณด๋ฉด HTML์ฒ˜๋Ÿผ <>ํƒœ๊ทธ๋ฅผ ๋ณผ์ˆ˜ ์žˆ๋Š”๋ฐ, ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ ‡๊ฒŒ ์ž…๋ ฅํ•˜์ง€๋งŒ

์ปดํ“จํ„ฐ๊ฐ€ ์•Œ์•„ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ๋ฐ”๊ฟ”์ฃผ๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.


ํŒŒ์„œ๋ž€ ํŒŒ์‹ฑ์„ ํ•˜๋Š” ํ”„๋กœ์„ธ์„œ๋ฅผ ํŒŒ์„œ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ฆ‰, ํŒŒ์„œ๊ฐ€ ํŒŒ์‹ฑ ์ž‘์—…์„ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋˜ํ•œ ์ปดํผ์ผ๋Ÿฌ๋‚˜ ์ธํ„ฐํ”„๋ฆฌํ„ฐ์—์„œ ์›์‹œ ํ”„๋กœ๊ทธ๋žจ์„ ์ฝ์–ด ๋“ค์—ฌ, ๊ทธ ๋ฌธ์žฅ์˜ ๊ตฌ์กฐ๋ฅผ

์•Œ์•„๋‚ด๋Š” ๊ตฌ๋ฌธ ๋ถ„์„(parsing)์„ ํ–‰ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.



๐Ÿ’ก JSON์˜ ์‚ฌ์šฉ ๋ฒ”์œ„

XML ๋ฌธ์„œ๋Š” XML DOM์„ ์ด์šฉํ•˜์—ฌ ํ•ด๋‹น ๋ฌธ์„œ์— ์ ‘๊ทผํ•œ๋‹ค.

ํ•˜์ง€๋งŒ JSON์€ ๋ฌธ์ž์—ด์„ ์ „์†ก๋ฐ›์€ ํ›„์— ํ•ด๋‹น ๋ฌธ์ž์—ด์„ ๋ฐ”๋กœ ํŒŒ์‹ฑํ•˜๋ฏ€๋กœ,

XML๋ณด๋‹ค ๋”์šฑ ๋น ๋ฅธ ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ๋ณด์—ฌ์ค€๋‹ค. ๋”ฐ๋ผ์„œ HTML๊ณผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€

์—ฐ๋™๋˜์–ด ๋น ๋ฅธ ์‘๋‹ต์ด ํ•„์š”ํ•œ ์›น ํ™˜๊ฒฝ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ JSON์€ ์ „์†ก๋ฐ›์€ ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ๊ฒ€์ฆํ•ด์•ผ ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ์˜ ๊ฒ€์ฆ์ด ํ•„์š”ํ•œ ๊ณณ์—์„œ๋Š” ์Šคํ‚ค๋งˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„

๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ๋Š” XML์ด ์•„์ง๋„ ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค.


DOM(Document Object Model)์ด๋ž€?

โ‡จ XML์ด๋‚˜ HTML ๋ฌธ์„œ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ์ผ์ข…์˜ ์ธํ„ฐํŽ˜์ด์Šค

โ‡จ ์„ธ ์ข…๋ฅ˜ : Core DOM / HTML DOM / XML DOM




๐Ÿ“š References