๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“š Computer Science/ETC

XML

by hyebin (Helia) 2025. 10. 29.
๋ฐ˜์‘ํ˜•

XML (eXtensible Markup Language)

1. ๊ฐœ๋…

XML์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐ์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๊ณ  ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋งˆํฌ์—… ์–ธ์–ด๋กœ, ๋ฐ์ดํ„ฐ์˜ ์˜๋ฏธ(Meaning) ์™€ ๊ตฌ์กฐ(Structure) ๋ฅผ ํ•จ๊ป˜ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋จ.

ํƒœ๊ทธ๋ฅผ ์ง์ ‘ ์ •์˜ํ•  ์ˆ˜ ์žˆ์–ด ํ™•์žฅ์„ฑ(Extensible) ์ด ๋†’์œผ๋ฉฐ, ์‹œ์Šคํ…œ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ตํ™˜, ์„ค์ • ํŒŒ์ผ, ๋ฌธ์„œ ๊ตฌ์กฐ ์ •์˜ ๋“ฑ์— ๋„๋ฆฌ ํ™œ์šฉ๋จ.


2. ํŠน์ง•

  • ํƒœ๊ทธ(<tag>)๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ์‹ธ๋Š” ๊ตฌ์กฐ
  • ๋ฐ์ดํ„ฐ์™€ ๋ฐ์ดํ„ฐ์˜ ์˜๋ฏธ๋ฅผ ํ•จ๊ป˜ ํ‘œํ˜„ ๊ฐ€๋Šฅ
  • ์‚ฌ๋žŒ์ด ์ฝ๊ธฐ ์–ด๋ ต์ง€๋งŒ ๊ธฐ๊ณ„๊ฐ€ ํ•ด์„ํ•˜๊ธฐ ์šฉ์ดํ•จ
  • ๊ณ„์ธต์ (hierarchical) ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง
  • ๋ฐ์ดํ„ฐ ๊ฒ€์ฆ์„ ์œ„ํ•œ DTD ๋˜๋Š” XML Schema ์ง€์›
  • ์ฃผ์„(<!-- comment -->) ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • JSON๋ณด๋‹ค ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๊ฐ€ ํฌ๊ณ  ๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•จ
  • ํ†ต์‹ ๋ณด๋‹ค๋Š” ๋ฌธ์„œ ์ €์žฅ, ์„ค์ •, ๋ณต์žกํ•œ ๊ณ„์ธต ํ‘œํ˜„์— ์ฃผ๋กœ ์‚ฌ์šฉ๋จ

3. ๋ฌธ๋ฒ• ๊ทœ์น™

์˜ˆ์‹œ

<?xml version="1.0" encoding="UTF-8"?>
<user>
  <name>Hyebin</name>
  <age>25</age>
  <isBackendDeveloper>true</isBackendDeveloper>
  <skills>
    <skill>Java</skill>
    <skill>Spring</skill>
    <skill>MySQL</skill>
  </skills>
</user>

XML ๊ธฐ๋ณธ ๊ตฌ์„ฑ ์š”์†Œ

๊ตฌ์„ฑ ์š”์†Œ ์„ค๋ช… ์˜ˆ์‹œ
์„ ์–ธ๋ถ€ XML ๋ฒ„์ „๊ณผ ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹ ์ง€์ • <?xml version="1.0" encoding="UTF-8"?>
์š”์†Œ(Element) ๋ฐ์ดํ„ฐ์˜ ๋‹จ์œ„, ์‹œ์ž‘·์ข…๋ฃŒ ํƒœ๊ทธ๋กœ ๊ตฌ์„ฑ <name>Hyebin</name>
์†์„ฑ(Attribute) ์š”์†Œ์˜ ๋ถ€๊ฐ€ ์ •๋ณด ์ œ๊ณต <user id="1">
ํ…์ŠคํŠธ ๊ฐ’ ์‹ค์ œ ๋ฐ์ดํ„ฐ ๋‚ด์šฉ <name>Hyebin</name>์˜ “Hyebin”
์ฃผ์„(Comment) ๋ฌธ์„œ ๋‚ด ์„ค๋ช… ์ถ”๊ฐ€ <!-- developer info -->
๋ฃจํŠธ ์š”์†Œ ๋ฌธ์„œ์˜ ์ตœ์ƒ์œ„ ์š”์†Œ, ํ•˜๋‚˜๋งŒ ์กด์žฌ <user>...</user>

๊ทœ์น™ ์š”์•ฝ

  • ์‹œ์ž‘ ํƒœ๊ทธ์™€ ์ข…๋ฃŒ ํƒœ๊ทธ๋Š” ๋ฐ˜๋“œ์‹œ ์ง์„ ์ด๋ค„์•ผ ํ•จ (<tag></tag>)
  • ๋ฃจํŠธ(root) ์š”์†Œ๋Š” ๋‹จ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•ด์•ผ ํ•จ
  • ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•จ (<Name> ≠ <name>)
  • ์†์„ฑ ๊ฐ’์€ ํฐ๋”ฐ์˜ดํ‘œ๋กœ ๊ฐ์‹ธ์•ผ ํ•จ (" ")
  • ์ฃผ์„์€ <!-- --> ํ˜•ํƒœ๋กœ ์ž‘์„ฑ
  • ์ž˜๋ชป๋œ ์ค‘์ฒฉ์€ ๋ถˆ๊ฐ€๋Šฅ (<a><b></a></b>๋Š” ์˜ค๋ฅ˜)

4. HTML / XML / JSON ๋น„๊ต

๊ตฌ๋ถ„ HTML XML JSON
๋ชฉ์  ๋ฐ์ดํ„ฐ ํ‘œ์‹œ ๋ฐ ๋ Œ๋”๋ง ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐ ์ „์†ก ๋ฐ์ดํ„ฐ ๊ตํ™˜ ๋ฐ ํ†ต์‹ 
๊ตฌ์กฐ ๋ฏธ๋ฆฌ ์ •์˜๋œ ํƒœ๊ทธ ์‚ฌ์šฉ ์‚ฌ์šฉ์ž ์ •์˜ ํƒœ๊ทธ ์‚ฌ์šฉ Key-Value ๊ตฌ์กฐ
๋ฌธ๋ฒ• ์—„๊ฒฉ์„ฑ ๋น„๊ต์  ๊ด€๋Œ€ ๋งค์šฐ ์—„๊ฒฉ ๋‹จ์ˆœํ•จ
๋ฐ์ดํ„ฐ ํ‘œํ˜„ ์‹œ๊ฐ์  ์š”์†Œ ์ค‘์‹ฌ ์˜๋ฏธ·๊ตฌ์กฐ ์ค‘์‹ฌ ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ
๊ฐ€๋…์„ฑ ๋†’์Œ ๋‚ฎ์Œ ๋†’์Œ
๋ฐ์ดํ„ฐ ํฌ๊ธฐ ์ค‘๊ฐ„ ํผ ์ž‘์Œ
์‚ฌ์šฉ ์˜ˆ์‹œ ์›น ํŽ˜์ด์ง€, UI ์„ค์ • ํŒŒ์ผ, ๋ฌธ์„œ ๊ตฌ์กฐ REST API, ์„œ๋ฒ„ ํ†ต์‹ 
๋ฐ์ดํ„ฐ ๊ฒ€์ฆ ๋ถˆ๊ฐ€ ๊ฐ€๋Šฅ(DTD/XSD) JSON Schema๋กœ ๊ฐ€๋Šฅ
ํŒŒ์‹ฑ ์†๋„ ๋น ๋ฆ„ ๋А๋ฆผ ๋งค์šฐ ๋น ๋ฆ„
ํ™•์žฅ์„ฑ ๋‚ฎ์Œ ๋†’์Œ ์ค‘๊ฐ„

5. ๋ฉด์ ‘ ํฌ์ธํŠธ ์ •๋ฆฌ

  • HTML์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œ์‹œ(ํ™”๋ฉด ์ถœ๋ ฅ) ํ•˜๊ธฐ ์œ„ํ•œ ์–ธ์–ด
  • XML์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐํ™”·์ €์žฅ ํ•˜๊ธฐ ์œ„ํ•œ ์–ธ์–ด
  • JSON์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†ก·๊ตํ™˜ ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒฝ๋Ÿ‰ ํฌ๋งท
  • XML์€ ํƒœ๊ทธ ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ, JSON์€ Key-Value ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ
  • ํ˜„๋Œ€ ์‹œ์Šคํ…œ์—์„œ๋Š” REST API + JSON ์กฐํ•ฉ์ด ํ‘œ์ค€
  • XML์€ ์—ฌ์ „ํžˆ Spring ์„ค์ • ํŒŒ์ผ, SOAP, ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ ๋“ฑ์—์„œ ์‚ฌ์šฉ๋จ

ํ•ต์‹ฌ ์š”์•ฝ

HTML์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์–ธ์–ด
XML์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐํ™”ํ•˜๋Š” ์–ธ์–ด
JSON์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•˜๋Š” ํ˜•์‹

ํ˜„์žฌ๋Š”๊ฐ€๋ณ๊ณ  ํšจ์œจ์ ์ธ JSON์ด ํ‘œ์ค€ ํฌ๋งท์œผ๋กœ ์ž๋ฆฌ์žก์Œ

๋ฐ˜์‘ํ˜•

'๐Ÿ“š Computer Science > ETC' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

API  (0) 2025.11.07
JSON  (0) 2025.10.29