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