ย  ย 

๐Ÿ’ฅ XML ์™„๋ฒฝ ๊ฐ€์ด๋“œ: 10๋ถ„ ๋งŒ์— ํ•ต์‹ฌ๋งŒ ์™์™ ์ดํ•ดํ•˜๊ธฐ! ๐Ÿ’ฅ

์•ˆ๋…•ํ•˜์„ธ์š”! ์˜ค๋Š˜์€ ์—ฌ๋Ÿฌ๋ถ„์ด ์›น ๊ฐœ๋ฐœ, ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ๋งˆ์ฃผํ•˜๊ฒŒ ๋˜๋Š” ์ค‘์š”ํ•œ ๊ฐœ๋…์ธ XML์— ๋Œ€ํ•ด ์‰ฝ๊ณ  ์žฌ๋ฏธ์žˆ๊ฒŒ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. XML์€ ๋งˆ์น˜ ๋ ˆ๊ณ  ๋ธ”๋ก์ฒ˜๋Ÿผ ์ •๋ณด๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ๊ตฌ์กฐํ™”ํ•˜๊ณ  ํ‘œํ˜„ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•œ ๋„๊ตฌ์ธ๋ฐ์š”. ๋ณต์žกํ•ด ๋ณด์ด๋Š” XML์„ ์‰ฝ๊ณ  ๋ช…ํ™•ํ•˜๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก, ํ•ต์‹ฌ ๋‚ด์šฉ๋งŒ ์™์™ ๋ฝ‘์•„ ์ž์„ธํžˆ ์„ค๋ช…ํ•ด ๋“œ๋ฆด๊ฒŒ์š”. ํ•จ๊ป˜ XML์˜ ์„ธ๊ณ„๋กœ ๋– ๋‚˜๋ณผ๊นŒ์š”?

๐Ÿงฉ XML์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”?

XML(eXtensible Markup Language)์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ๋งˆํฌ์—… ์–ธ์–ด์ž…๋‹ˆ๋‹ค. HTML๊ณผ ๋น„์Šทํ•ด ๋ณด์ด์ง€๋งŒ, HTML์€ ์›น ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ์„ โ€˜ํ‘œ์‹œโ€™ํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘๋Š” ๋ฐ˜๋ฉด, XML์€ ๋ฐ์ดํ„ฐ์˜ โ€˜๊ตฌ์กฐโ€™์™€ โ€˜์˜๋ฏธโ€™๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐ ์ง‘์ค‘ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, XML์€ ๋ฐ์ดํ„ฐ๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์ฃ .

XML์€ ์‚ฌ๋žŒ๊ณผ ๊ธฐ๊ณ„ ๋ชจ๋‘ ์ฝ๊ธฐ ์‰ฌ์šด ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋•๋ถ„์— ์„œ๋กœ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•˜๊ฑฐ๋‚˜, ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์›น ์„œ๋น„์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ฑฐ๋‚˜, ์„ค์ • ํŒŒ์ผ์„ ์ €์žฅํ•˜๋Š” ๋ฐ XML์ด ํ™œ์šฉ๋˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

XML์€ W3C(World Wide Web Consortium)์—์„œ ํ‘œ์ค€์œผ๋กœ ๊ด€๋ฆฌ๋˜๊ณ  ์žˆ์œผ๋ฉฐ, ๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€ ํ”Œ๋žซํผ์—์„œ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ XML์„ ์ดํ•ดํ•˜๊ณ  ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด, ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ์„ ํ•œ์ธต ๋” ๋Œ์–ด์˜ฌ๋ฆด ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๐Ÿงฑ XML์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ ์ดํ•ดํ•˜๊ธฐ

XML ๋ฌธ์„œ๋Š” ์š”์†Œ(Element), ์†์„ฑ(Attribute), ํ…์ŠคํŠธ(Text) ๋“ฑ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋งˆ์น˜ ๊ฑด๋ฌผ์„ ์ง“๋Š” ๋ ˆ๊ณ  ๋ธ”๋ก๊ณผ ๊ฐ™๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šธ ๊ฑฐ์˜ˆ์š”.

  • ์š”์†Œ(Element): XML ๋ฌธ์„œ์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์„ฑ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค. ์‹œ์ž‘ ํƒœ๊ทธ์™€ ์ข…๋ฃŒ ํƒœ๊ทธ๋กœ ๋‘˜๋Ÿฌ์‹ธ์—ฌ ์žˆ์œผ๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๋Š” ์ปจํ…Œ์ด๋„ˆ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, <book>, <title> ๋“ฑ์ด ์š”์†Œ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
  • ์†์„ฑ(Attribute): ์š”์†Œ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์†์„ฑ์€ ์‹œ์ž‘ ํƒœ๊ทธ ์•ˆ์— ์ด๋ฆ„-๊ฐ’ ์Œ์œผ๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, <book id="123">์—์„œ id๋Š” ์†์„ฑ ์ด๋ฆ„์ด๊ณ , "123"์€ ์†์„ฑ ๊ฐ’์ž…๋‹ˆ๋‹ค.
  • ํ…์ŠคํŠธ(Text): ์š”์†Œ ์•ˆ์— ํฌํ•จ๋œ ์‹ค์ œ ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, <title>XML ์™„๋ฒฝ ๊ฐ€์ด๋“œ</title>์—์„œ XML ์™„๋ฒฝ ๊ฐ€์ด๋“œ๋Š” ํ…์ŠคํŠธ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

XML ๋ฌธ์„œ๋Š” ๋ฃจํŠธ ์š”์†Œ(Root Element)๋ฅผ ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜๋งŒ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฃจํŠธ ์š”์†Œ๋Š” XML ๋ฌธ์„œ์˜ ์ตœ์ƒ์œ„ ์š”์†Œ์ด๋ฉฐ, ๋ชจ๋“  ๋‹ค๋ฅธ ์š”์†Œ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

XML ๋ฌธ์„œ๋Š” ํŠธ๋ฆฌ(Tree) ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ๋ฃจํŠธ ์š”์†Œ๋ฅผ ์‹œ์ž‘์œผ๋กœ, ์š”์†Œ๋“ค์ด ๊ณ„์ธต์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ๊ฐ„๋‹จํ•œ XML ๋ฌธ์„œ์˜ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

โ€œ`xml



XML ์™„๋ฒฝ ๊ฐ€์ด๋“œ
๊น€์ฒ ์ˆ˜ 25000


HTML5 ์ž…๋ฌธ
๋ฐ•์˜ํฌ 20000


โ€œ`

์œ„ ์˜ˆ์‹œ์—์„œ <bookstore>๋Š” ๋ฃจํŠธ ์š”์†Œ์ด๋ฉฐ, <book>, <title>, <author>, <price>๋Š” <bookstore> ์š”์†Œ์˜ ์ž์‹ ์š”์†Œ์ž…๋‹ˆ๋‹ค. id๋Š” <book> ์š”์†Œ์˜ ์†์„ฑ์ž…๋‹ˆ๋‹ค.

โœ… XML ๋ฌธ๋ฒ• ๊ทœ์น™ ์™„๋ฒฝ ์ •๋ฆฌ

XML ๋ฌธ์„œ๋Š” ์œ ํšจ์„ฑ(Validity)๊ณผ ์ •ํ˜•์„ฑ(Well-formedness)์ด๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ๊ทœ์น™์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

  • ์ •ํ˜•์„ฑ(Well-formedness): XML ๋ฌธ์„œ๊ฐ€ ๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ• ๊ทœ์น™์„ ์ค€์ˆ˜ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ •ํ˜•์„ฑ์„ ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•˜๋Š” XML ๋ฌธ์„œ๋Š” ํŒŒ์‹ฑ(Parsing)ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ์œ ํšจ์„ฑ(Validity): XML ๋ฌธ์„œ๊ฐ€ DTD(Document Type Definition) ๋˜๋Š” XML Schema์™€ ๊ฐ™์€ ์Šคํ‚ค๋งˆ(Schema)์— ์ •์˜๋œ ๊ทœ์น™์„ ์ค€์ˆ˜ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์œ ํšจ์„ฑ์„ ๋งŒ์กฑํ•˜๋Š” XML ๋ฌธ์„œ๋Š” ์ •ํ˜•์„ฑ์„ ๋งŒ์กฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

XML ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ๋ฐ˜๋“œ์‹œ ์ง€์ผœ์•ผ ํ•  ๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ• ๊ทœ์น™์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋ชจ๋“  ์š”์†Œ๋Š” ์‹œ์ž‘ ํƒœ๊ทธ์™€ ์ข…๋ฃŒ ํƒœ๊ทธ๋ฅผ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋นˆ ์š”์†Œ๋Š” <element/>์™€ ๊ฐ™์ด ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํƒœ๊ทธ๋Š” ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. <Book>๊ณผ <book>์€ ์„œ๋กœ ๋‹ค๋ฅธ ์š”์†Œ๋กœ ์ธ์‹๋ฉ๋‹ˆ๋‹ค.
  • ์š”์†Œ๋Š” ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ค‘์ฒฉ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. <book><title>XML ์™„๋ฒฝ ๊ฐ€์ด๋“œ</book></title>์™€ ๊ฐ™์ด ํƒœ๊ทธ๊ฐ€ ์—‡๊ฐˆ๋ฆฌ๊ฒŒ ์ค‘์ฒฉ๋˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
  • ์†์„ฑ ๊ฐ’์€ ๋ฐ˜๋“œ์‹œ ๋”ฐ์˜ดํ‘œ(โ€œโ€) ๋˜๋Š” ์ž‘์€ ๋”ฐ์˜ดํ‘œ(โ€)๋กœ ๋ฌถ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. <book id=123>์€ ์ž˜๋ชป๋œ ํ‘œํ˜„์ด๋ฉฐ, <book id="123"> ๋˜๋Š” <book id='123'>์™€ ๊ฐ™์ด ํ‘œํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ํŠน์ˆ˜ ๋ฌธ์ž๋Š” ์—”ํ‹ฐํ‹ฐ(Entity)๋กœ ํ‘œํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, <๋Š” <, >๋Š” >, &๋Š” &, '๋Š” ', "๋Š” "๋กœ ํ‘œํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • XML ์„ ์–ธ์€ ์„ ํƒ ์‚ฌํ•ญ์ด์ง€๋งŒ, ๋ฌธ์„œ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์— ์œ„์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. XML ์„ ์–ธ์€ XML ๋ฌธ์„œ์˜ ๋ฒ„์ „๊ณผ ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, <?xml version="1.0" encoding="UTF-8"?>์€ XML ๋ฒ„์ „ 1.0์„ ์‚ฌ์šฉํ•˜๊ณ , UTF-8 ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

XML ๋ฌธ๋ฒ• ๊ทœ์น™์„ ์ž˜ ์ง€ํ‚ค๋ฉด, ์˜ค๋ฅ˜ ์—†์ด XML ๋ฌธ์„œ๋ฅผ ํŒŒ์‹ฑํ•˜๊ณ  ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โš™๏ธ XML ํ™œ์šฉ ์‚ฌ๋ก€ ์‚ดํŽด๋ณด๊ธฐ

XML์€ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ „์†กํ•˜๋Š” ๋ฐ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ๋Œ€ํ‘œ์ ์ธ ํ™œ์šฉ ์‚ฌ๋ก€๋ฅผ ์‚ดํŽด๋ณผ๊นŒ์š”?

  • ์›น ์„œ๋น„์Šค(Web Service): ์›น ์„œ๋น„์Šค๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•˜๊ธฐ ์œ„ํ•ด XML์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. SOAP(Simple Object Access Protocol)์€ XML ๊ธฐ๋ฐ˜์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›น ์„œ๋น„์Šค ๊ฐ„์˜ ํ†ต์‹ ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. REST(Representational State Transfer) API์—์„œ๋„ XML ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์„ค์ • ํŒŒ์ผ(Configuration File): ๋งŽ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์‹œ์Šคํ…œ์—์„œ ์„ค์ •์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด XML์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. XML์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐํ™”ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์šฉ์ดํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์„ค์ • ํŒŒ์ผ์„ ์ž‘์„ฑํ•˜๊ณ  ํŒŒ์‹ฑํ•˜๋Š” ๋ฐ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Apache Tomcat, Spring Framework ๋“ฑ๊ณผ ๊ฐ™์€ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์—์„œ XML ๊ธฐ๋ฐ˜์˜ ์„ค์ • ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(Database): ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์€ XML ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. XML ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ์ „์šฉ ๋ฐ์ดํ„ฐ ํƒ€์ž…(Data Type)์„ ์ง€์›ํ•˜๊ฑฐ๋‚˜, XML ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์— ๋งคํ•‘ํ•˜์—ฌ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฌธ์„œ ํฌ๋งท(Document Format): XML์€ ๋ฌธ์„œ ํฌ๋งท์„ ์ •์˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Microsoft Office Open XML(OOXML)์€ ์›Œ๋“œ, ์—‘์…€, ํŒŒ์›Œํฌ์ธํŠธ ๋“ฑ์˜ ๋ฌธ์„œ ํฌ๋งท์„ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•ด XML์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด ์™ธ์—๋„ XML์€ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„ํ•˜๊ณ  ๊ตํ™˜ํ•˜๋Š” ๋ฐ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค. XML์˜ ํ™œ์šฉ ๊ฐ€๋Šฅ์„ฑ์€ ๋ฌด๊ถ๋ฌด์ง„ํ•˜๋ฉฐ, ์—ฌ๋Ÿฌ๋ถ„์˜ ์•„์ด๋””์–ด์— ๋”ฐ๋ผ ๋”์šฑ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ ํ™œ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

XML ํŒŒ์‹ฑ ๋ฐฉ๋ฒ• ์•Œ์•„๋ณด๊ธฐ

XML ๋ฌธ์„œ๋ฅผ ํŒŒ์‹ฑ(Parsing)ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • DOM(Document Object Model): XML ๋ฌธ์„œ์˜ ์ „์ฒด ๋‚ด์šฉ์„ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•˜์—ฌ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. DOM ํŒŒ์„œ๋Š” XML ๋ฌธ์„œ๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ  ์ˆ˜์ •ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•˜์ง€๋งŒ, ๋Œ€์šฉ๋Ÿ‰ XML ๋ฌธ์„œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๋งŽ์•„ ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • SAX(Simple API for XML): XML ๋ฌธ์„œ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฝ์œผ๋ฉด์„œ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. SAX ํŒŒ์„œ๋Š” ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์ฝ์–ด ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋Œ€์šฉ๋Ÿ‰ XML ๋ฌธ์„œ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ XML ๋ฌธ์„œ๋ฅผ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ํŠน์ • ์š”์†Œ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐ๋Š” DOM ํŒŒ์„œ๋ณด๋‹ค ๋ณต์žกํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋Š” XML ํŒŒ์‹ฑ์„ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋˜๋Š” ๋ชจ๋“ˆ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Java์—์„œ๋Š” JAXP(Java API for XML Processing), Python์—์„œ๋Š” xml.etree.ElementTree ๋“ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ Python์—์„œ xml.etree.ElementTree ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ XML ๋ฌธ์„œ๋ฅผ ํŒŒ์‹ฑํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

โ€œ`python
import xml.etree.ElementTree as ET

XML ๋ฌธ์„œ ํŒŒ์‹ฑ

tree = ET.parse(โ€˜books.xmlโ€™)
root = tree.getroot()

๋ชจ๋“  book ์š”์†Œ์— ๋Œ€ํ•ด ๋ฐ˜๋ณต

for book in root.findall(โ€˜bookโ€™):
# title, author, price ์š”์†Œ์˜ ๊ฐ’ ์ถ”์ถœ
title = book.find(โ€˜titleโ€™).text
author = book.find(โ€˜authorโ€™).text
price = book.find(โ€˜priceโ€™).text

# ๊ฒฐ๊ณผ ์ถœ๋ ฅ
print(fโ€Title: {title}, Author: {author}, Price: {price}โ€)
โ€œ`

์œ„ ์˜ˆ์‹œ์—์„œ๋Š” books.xml ํŒŒ์ผ์„ ํŒŒ์‹ฑํ•˜์—ฌ <book> ์š”์†Œ์˜ <title>, <author>, <price> ์š”์†Œ์˜ ๊ฐ’์„ ์ถ”์ถœํ•˜์—ฌ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

๋งˆ๋ฌด๋ฆฌํ•˜๋ฉฐ

์˜ค๋Š˜์€ XML์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๋ถ€ํ„ฐ ํ™œ์šฉ ์‚ฌ๋ก€, ํŒŒ์‹ฑ ๋ฐฉ๋ฒ•๊นŒ์ง€ ๋‹ค์–‘ํ•œ ๋‚ด์šฉ์„ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. XML์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐํ™”ํ•˜๊ณ  ๊ตํ™˜ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•œ ๋„๊ตฌ์ด๋ฉฐ, ์›น ๊ฐœ๋ฐœ, ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค.

XML์„ ์ดํ•ดํ•˜๊ณ  ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด, ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ , ์„œ๋กœ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์›ํ™œํ•˜๊ฒŒ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•ž์œผ๋กœ๋„ XML์— ๋Œ€ํ•œ ๊ด€์‹ฌ์„ ๊ฐ€์ง€๊ณ  ๊พธ์ค€ํžˆ ํ•™์Šตํ•˜๊ณ  ํ™œ์šฉํ•ด ๋ณด์„ธ์š”.

๋‹ค์Œ์—” ๋” ์œ ์ตํ•œ ์ •๋ณด๋กœ ๋งŒ๋‚˜์š”!

์˜ค๋Š˜ ์ค€๋น„ํ•œ ๋‚ด์šฉ์€ ์—ฌ๊ธฐ๊นŒ์ง€์ž…๋‹ˆ๋‹ค. XML์— ๋Œ€ํ•ด ๋” ๊ถ๊ธˆํ•œ ์ ์ด ์žˆ๋‹ค๋ฉด ์–ธ์ œ๋“ ์ง€ ๋Œ“๊ธ€๋กœ ์งˆ๋ฌธํ•ด์ฃผ์„ธ์š”! ์—ฌ๋Ÿฌ๋ถ„์˜ ๊ฐœ๋ฐœ ์—ฌ์ •์— ์กฐ๊ธˆ์ด๋‚˜๋งˆ ๋„์›€์ด ๋˜์—ˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋‹ค์Œ์— ๋” ์œ ์ตํ•˜๊ณ  ์žฌ๋ฏธ์žˆ๋Š” ๋‚ด์šฉ์œผ๋กœ ๋‹ค์‹œ ๋งŒ๋‚˜์š”!

์ง€๊ธˆ ํ™•์ธํ•˜์ง€ ์•Š์œผ๋ฉด ๋†“์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
xml์˜ ์ˆจ๊ฒจ์ง„ ์ด์•ผ๊ธฐ์™€ ๋” ๋งŽ์€ ํ•ต์‹ฌ์ •๋ณด ์•Œ์•„๋ณด๊ธฐ!

๐Ÿ‘‰ ์ง€๊ธˆ ๋ฐ”๋กœ ํ™•์ธํ•˜๊ธฐ
์œ„๋กœ ์Šคํฌ๋กค