XML(eXtensible Markup Language)


๐Ÿ–ฅ๏ธ XML(eXtensible Markup Language)์ด๋ž€?

XML์€ eXtensible Markup Language์˜ ์•ฝ์ž๋กœ, ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐํ™”ํ•˜๊ณ  ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋งˆํฌ์—… ์–ธ์–ด์ž„. HTML๊ณผ ์œ ์‚ฌํ•œ ํƒœ๊ทธ(tag) ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€์ง€๋งŒ, HTML์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐ ์ง‘์ค‘ํ•˜๋Š” ๋ฐ˜๋ฉด, XML์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ •์˜ํ•˜๊ณ  ์ €์žฅํ•˜๋Š” ๋ฐ ์ดˆ์ ์ด ๋งž์ถฐ์ ธ ์žˆ์Œ.


๐Ÿ–ฅ๏ธ XML์˜ ํŠน์ง•

  • ํ™•์žฅ ๊ฐ€๋Šฅ์„ฑ: ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ํƒœ๊ทธ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Œ.
  • ๊ณ„์ธต์  ๊ตฌ์กฐ: ํŠธ๋ฆฌ(Tree) ๊ตฌ์กฐ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋ฉฐ, ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง.
  • ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐ ์ „์†ก: JSON๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ „์†กํ•˜๋Š” ๋ฐ ์ ํ•ฉํ•จ.
  • ํ”Œ๋žซํผ ๋…๋ฆฝ์„ฑ: ๋‹ค์–‘ํ•œ ์‹œ์Šคํ…œ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ตํ™˜์ด ๊ฐ€๋Šฅํ•จ.
  • ๊ฐ€๋…์„ฑ: ์‚ฌ๋žŒ์ด ์ฝ๊ธฐ ์‰ฌ์šด ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ์Œ.

๐Ÿ–ฅ๏ธ XML ๊ธฐ๋ณธ ๊ตฌ์กฐ

XML ๋ฌธ์„œ๋Š” ๋ฃจํŠธ ์š”์†Œ(root element)๋ฅผ ๊ฐ€์ง€๋ฉฐ, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ค‘์ฒฉ๋œ ์š”์†Œ(element)๋กœ ๊ตฌ์„ฑ๋จ.

<?xml version="1.0" encoding="UTF-8"?>
<game>
    <player>
        <name>Player</name>
        <level>6</level>
        <health>120</health>
        <mana>50</mana>
    </player>
    <inventory>
        <item id="1" type="weapon">
            <name>Excalibur</name>
            <damage>50</damage>
        </item>
        <item id="2" type="potion">
            <name>Health Potion</name>
            <heal>30</heal>
        </item>
    </inventory>
</game>

โ€ƒโ€ƒโ€ƒโ€ƒโ€ƒโ€ƒโ€ƒโ€ƒโ€ƒโ€ƒโ€ƒโ–ฒ ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์— ํ™œ์šฉํ•œ XML ์˜ˆ์‹œ

์„ค๋ช…

  • <?xml version="1.0" encoding="UTF-8"?> โ†’ XML ์„ ์–ธ๋ถ€ (๋ฌธ์„œ์˜ ๋ฒ„์ „๊ณผ ์ธ์ฝ”๋”ฉ ์ง€์ •)
  • <game> โ†’ ์ตœ์ƒ์œ„ ๋ฃจํŠธ ์š”์†Œ
  • <player> โ†’ ํ”Œ๋ ˆ์ด์–ด ์ •๋ณด
    • <name>, <level>, <health>, <mana> โ†’ ํ”Œ๋ ˆ์ด์–ด์˜ ์†์„ฑ
  • <inventory> โ†’ ์ธ๋ฒคํ† ๋ฆฌ ์š”์†Œ
    • <item> โ†’ ๊ฒŒ์ž„ ๋‚ด ์•„์ดํ…œ (์†์„ฑ : id, type)
    • <name>, <damage>, <heal> โ†’ ์•„์ดํ…œ ์†์„ฑ๊ฐ’ ์ •์˜

๐Ÿ–ฅ๏ธ XML ๋ฌธ๋ฒ• ๊ทœ์น™

  • ๋ฐ˜๋“œ์‹œ ๋ฃจํŠธ ์š”์†Œ(root element)๋ฅผ ํฌํ•จํ•ด์•ผ ํ•จ
  • ํƒœ๊ทธ๋Š” ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•จ (์˜ˆ: <Name>๊ณผ <name>์€ ๋‹ค๋ฆ„)
  • ๋ชจ๋“  ํƒœ๊ทธ๋Š” ๋‹ซํ˜€ ์žˆ์–ด์•ผ ํ•จ (<tag></tag> ๋˜๋Š” <tag />)
  • ์†์„ฑ ๊ฐ’์€ ๋ฐ˜๋“œ์‹œ ํฐ๋”ฐ์˜ดํ‘œ(โ€œโ€) ๋˜๋Š” ์ž‘์€๋”ฐ์˜ดํ‘œ(โ€˜โ€˜)๋กœ ๊ฐ์‹ธ์•ผ ํ•จ
  • ํŠน์ˆ˜ ๋ฌธ์ž๋Š” ์—”ํ‹ฐํ‹ฐ(Entity)๋กœ ํ‘œํ˜„ํ•ด์•ผ ํ•จ (์˜ˆ: < โ†’ &lt;, > โ†’ &gt;)

๐Ÿ–ฅ๏ธ XML๊ณผ JSON ๋น„๊ต

๋น„๊ต ํ•ญ๋ชฉXMLJSON
๋ฐ์ดํ„ฐ ํ‘œํ˜„ ๋ฐฉ์‹ํƒœ๊ทธ ๊ธฐ๋ฐ˜ํ‚ค-๊ฐ’ ์Œ ๊ธฐ๋ฐ˜
๊ฐ€๋…์„ฑ์‚ฌ๋žŒ์ด ์ฝ๊ธฐ ์‰ฌ์›€๋” ๊ฐ„๊ฒฐํ•˜๊ณ  ์ง๊ด€์ ์ž„
๋ฐ์ดํ„ฐ ํฌ๊ธฐํƒœ๊ทธ๋กœ ์ธํ•ด ๋‹ค์†Œ ํผ์ƒ๋Œ€์ ์œผ๋กœ ์ž‘์Œ
ํŒŒ์‹ฑ ์†๋„๋А๋ฆผ (DOM ๊ธฐ๋ฐ˜)๋น ๋ฆ„ (JavaScript์—์„œ ๋ฐ”๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ)
ํ™•์žฅ์„ฑ์ž์œ ๋กœ์šด ํƒœ๊ทธ ์ •์˜ ๊ฐ€๋Šฅํ‚ค-๊ฐ’ ํ˜•ํƒœ๋กœ ์ œํ•œ๋จ

๐Ÿ–ฅ๏ธ XML์˜ ํ™œ์šฉ ์‚ฌ๋ก€

  • ์›น ์„œ๋น„์Šค (SOAP, RSS, Atom ํ”ผ๋“œ)
  • ์„ค์ • ํŒŒ์ผ (config.xml, AndroidManifest.xml)
  • ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐ ๊ตํ™˜ (๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, API ์‘๋‹ต)
  • ๋ฌธ์„œ ๊ตฌ์กฐ ์ •์˜ (XHTML, SVG, XSLT)


ยฉ 2024. All rights reserved.

Powered by Hydejack v9.2.1