๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ ๋ฐฐ์šฐ๊ณ  ์ตํžˆ๊ธฐ +/Spring

(107-108)[Spring]18-19์ผ์ฐจ: ((xml))โ–  XML โ– , โ–  XML DTD โ– , XmlApp01~04

by ์ข…์ด๋นจ๋Œ€ 2024. 1. 31.
TOP

๋ชฉ์ฐจ

    1. 2024.1.31-2.1(์ˆ˜-๋ชฉ)

     

     

    โ– โ– โ–  XML(eXtensible Markup Language) โ– โ– โ– 

     


    โ—‹ ๊ฐœ์š”

       ๋งˆํฌ์—…์ด๋ž€ ๋ฌธ์„œ ๋‚ด์šฉ ์ด์™ธ์— ๋ฌธ์„œ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๊ฑฐ๋‚˜ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์ •์˜ํ•œ
       ๋ถ€๊ฐ€์ ์ธ ์ •๋ณด๋ผ ํ•  ์ˆ˜ ์ž‡์œผ๋ฉฐ, ๋งˆํฌ์—…์˜ ํ‘œํ˜„์€ ๊ฐ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ •์˜ํ•œ
       ๊ณ ์œ ํ•œ ๋ฐฉ์‹์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.
       ์ฆ‰, ๋ฌธ์„œ ํŽธ์ง‘๊ธฐ๋งˆ๋‹ค ๋งˆํฌ์—…์„ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์„œ๋กœ ๋‹ค๋ฅด๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

    aflvekdc 45 99443304221
    vleockde 49 99530219432
    
    <people>
    <person>
    <name>aflvekdc</name>
    <age>45</age>
    <tel>99443304221</tel>
    </person>
    <person>
    <name>vleockde</name>
    <age>49</age>
    <tel>99530219432</tel>
    </person>
    </people>



    ==> ์œ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ด๋Ÿฐ ํ˜•์‹์œผ๋กœ ๊ตฌ์กฐํ™”, ํ‘œํ˜„ํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋“ค๊ฐ„์˜ ๊ตฌ๋ถ„์ด ๊ฐ€๋Šฅํ•จ => xml


    โ€ป ์ฐธ๊ณ 

     


       1) SGML(Standard Generalized Markup Language)

          SGML ์€ ๊ธฐ์ˆ ์  ๋ฌธ์„œ ๋งˆํฌ์—…์„ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋ฒ•์„ ์ œ๊ณตํ•˜๋Š” ํ‘œ์ค€ ์ผ๋ฐ˜ํ™”
          ๋งˆํฌ์—… ์–ธ์–ด๋กœ ๋””์ง€ํ„ธ ๋ฌธ์„œ๋ฅผ ํ”Œ๋žซํผ์— ์ƒ๊ด€์—†์ด ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ
          ๋งŒ๋“ค์–ด์กŒ์œผ๋ฉฐ, 1986๋…„์— ISO-8897 ํ‘œ์ค€์œผ๋กœ ์ œ์ •๋˜์—ˆ๊ณ  ๋ฌธ์„œ์˜ ๋…ผ๋ฆฌ์ 
          ๊ตฌ์กฐ์™€ ๋‚ด์šฉ์„ ๊ธฐ์ˆ ํ•˜๊ธฐ ์œ„ํ•œ ๋งˆํฌ์—…์ด๋‹ค.

          ์žฅ์  : ์‹œ์Šคํ…œ๊ณผ ํ”Œ๋žซํผ์— ๋…๋ฆฝ์  / ์žฌ์‚ฌ์šฉ์„ฑ / ๊ณต๊ฐœ ํ‘œ์ค€

          ๋‹จ์  : - ์ž‘์„ฑ ๊ทœ์น™์˜ ๋ณต์žก์„ฑ์œผ๋กœ ์ธํ•ด ์ „๋ฌธ๊ฐ€๋“ค๋งŒ์„ ์œ„ํ•œ ์–ธ์–ด

                 - ๊ด€๋ จ ์—…๊ณ„์˜ ๋ฒ”์šฉ์ ์ธ ์ง€์› ๋ฏธ๋น„

          → ์ด์™€ ๊ฐ™์€ ๋‹จ์ ์„ ์–ด๋А์ •๋„ ํ•ด๊ฒฐํ•˜๊ณ ์ž ๋งŒ๋“ค์–ด์ง„ ๋งˆํฌ์—… ์–ธ์–ด๊ฐ€

             ๋ฐ”๋กœ HTML ์ด๋‹ค.

     

       2) HTML(Hyper Text Markup Language)

          HTML ์€ ์›น์—์„œ ์ •๋ณด๋ฅผ ํ‘œํ˜„ํ•  ๋ชฉ์ ์œผ๋กœ ์ œ์•ˆํ•œ ๋งˆํฌ์—… ์–ธ์–ด๋กœ
          SGML ํƒœ๊ทธ ์ค‘ ์ผ๋ถ€๋ฅผ ๋ฏธ๋ฆฌ ์ •์˜ํ•ด์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“  ๊ฒƒ์ด ๋ฐ”๋กœ HTML ์ด๋‹ค.
          ์ด๋Ÿฌํ•œ HTML ์€ ์ธํ„ฐ๋„ท์˜ ๋น ๋ฅธ ๋ณด๊ธ‰๊ณผ ํ™•์žฅ์œผ๋กœ ๊ธ‰์„ฑ์žฅํ•˜์˜€๊ณ 
          ํ˜„์žฌ ๊ฐ€์žฅ ๋งŒํž ์‚ฌ์šฉ๋˜๋Š” ๋งˆํฌ์—… ์–ธ์–ด์ด๋‹ค.

          ์žฅ์  : ์›น ์ •๋ณด๋ฅผ ํ‘œํ˜„ํ•˜๋Š”๋ฐ ์žˆ์–ด์„œ ๋งค์šฐ ๋ฒ”์šฉ์ ์ด๋‹ค.

          ๋‹จ์  : - ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํƒœ๊ทธ๊ฐ€ ์ œํ•œ์ ์ด๋‹ค.
                 - ๋ฌธ์„œ์˜ ๋‚ด์šฉ๊ณผ ์ด๋ฅผ ํ™”๋ฉด์— ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์ •๋ณด๋งŒ ์กด์žฌํ•œ๋‹ค.
                   ๋”ฐ๋ผ์„œ ํƒœ๊ทธ ๋‚ด์˜ ๋‚ด์šฉ์ด ์–ด๋–ค ์˜๋ฏธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์—†๋‹ค.
                 - ๋ฌธ์„œ์— ํฌํ•จ๋œ ์ •๋ณด ๊ฐ„์— ์—ฐ๊ด€์„ฑ์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์—†๊ณ ,
                   ๊ด€๋ จ ์ž‡๋Š” ์ •๋ณด๋ฅผ ํƒ์ƒ‰ํ•˜๊ธฐ ์–ด๋ ต๋‹ค.
                 - ๋ฌธ์„œ์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์ฆํ•˜๊ธฐ ์–ด๋ ต๋‹ค.
                 - ์ „์ฒด ๋ฌธ์„œ๋งŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

     

       3) XML(Extensible Markup Language)

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

          HTML ์€ ์ •ํ•ด์ง„ ํƒœ๊ทธ๋งŒ์„ ์‚ฌ์šฉํ•˜๊ณ  ํƒœ๊ทธ์˜ ์ˆซ์ž๋„ ์ œํ•œ์„ ๋‘์–ด์„œ
          ์‚ฌ์šฉ์ด ํŽธ๋ฆฌํ•˜๊ธด ํ•˜์ง€๋งŒ ํƒœ๊ทธ๊ฐ€ ๋ฏธ๋ฆฌ ์ •ํ•ด์ ธ์žˆ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.
          ์ฆ‰, ์‹œ์‹œ๊ฐ๊ฐ€์œผ๋กœ ๋ณ€ํ•˜๋Š” ์ธํ„ฐ๋„ท ์‚ฌ์šฉ์ž๋“ค์˜ ๋ฐ์ดํ„ฐ ํ‘œํ˜„์— ๋Œ€ํ•œ ์š”๊ตฌ๋ฅผ ์ˆ˜์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”
          ํƒœ๊ทธ๋„ ๊ทธ์— ๋”ฐ๋ผ ์ƒˆ๋กœ์šด ํƒœ๊ทธ๊ฐ€ ํ•„์š”ํ•  ๋•Œ๊ฐ€ ์žˆ๊ธฐ ๋งˆ๋ จ์ธ๋ฐ
          ์ƒˆ๋กœ์šด ํƒœ๊ทธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†๋Š” ๊ฒƒ์ด๋‹ค.

          ๊ทธ๋ž˜์„œ ์ •ํ•ด์ง„ ํƒœ๊ทธ๊ฐ€ ์•„๋‹ˆ๋ผ ํ•„์š”ํ•  ๋•Œ ๋งˆ๋‹ค ํƒœ๊ทธ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์š”๊ตฌ๊ฐ€
          ์ผ์–ด๋‚˜๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ , ์ด ์š”๊ตฌ์— ๋Œ€ํ•œ ์ˆ˜์šฉ์ด ๋ฐ”๋กœ XML ์ด๋‹ค.
          ๊ฒฐ๊ตญ XML ์€ SGML(ํ‘œ์ค€ํ™”๋œ ์ผ๋ฐ˜ ๋งˆํฌ์—… ์–ธ์–ด)์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์žฅ์ ์ธ
          ๋ฌธ์„œ์˜ ๊ตฌ์กฐ์™€ ์†์„ฑ์„ ๊ทธ๋Œ€๋กœ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ,
          HTML ์˜ ๋‹จ์ ์ธ ์ •ํ•ด์ง„ ํƒœ๊ทธ๋ฐ–์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์™„ํ•ด์„œ ๋‚˜์˜ค๊ฒŒ ๋œ ๊ฒƒ์ด๋‹ค.

    โ—‹ XML / HTML / SGML ๋น„๊ต

     

              HTML SGML XML
    --------------------------------------------------------------------------------------------
       ํƒœ๊ทธ   ๋‚ด์žฅ๋œ DTD ์ •์˜ / ์‚ฌ์šฉ์ž์ •์˜ ํƒœ๊ทธ ์‚ฌ์šฉ ์‚ฌ์šฉ์ž ์ •์˜ ํƒœ๊ทธ ์‚ฌ์šฉ
              ์‚ฌ์šฉ์ž ์ •์˜ ๋ถˆ๊ฐ€๋Šฅ
    --------------------------------------------------------------------------------------------
       ๋ฌธ์„œ ์žฌ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅ ๊ฐ€๋Šฅ ๊ฐ€๋Šฅ
       
    --------------------------------------------------------------------------------------------
       ์‘์šฉ ๋‹จ์ˆœํ•œ ๋ฌธ์„œ์˜ ๋ณต์žกํ•œ ๊ตฌ์กฐ์˜ ๋ฌธ์„œ ๋ฐ SGML ๊ณผ ๋™์ผ /
    Presentation ๋ฐฉ๋Œ€ํ•œ ๋‚ด์šฉ์„ ์š”๊ตฌํ•˜๋Š” ์›น์—์„œ ์ •๋ณด ๊ตํ™˜
    ๋ฌธ์„œ
    --------------------------------------------------------------------------------------------
       ๋‚œ์ด๋„ ์‰ฌ์›€ ๋ณต์žกํ•˜๊ณ  ์–ด๋ ค์›€ ์ค‘๊ฐ„ ์ •๋„(SGML ์˜ ๋‹จ์ˆœํ™”)
    
    --------------------------------------------------------------------------------------------
       ๊ฒ€์ƒ‰ ๊ฒ€์ƒ‰ ์–ด๋ ค์›€ ์ž๋ฃŒ์˜ ํ‘œํ˜„๊ณผ ๋‚ด์šฉ์ด SGML ๊ณผ ๋™์ผ
    (๊ฒ€์ƒ‰ ์—”์ง„ ํ•„์š”) ๋ถ„๋ฆฌ๋˜์–ด ์ •ํ™•ํ•œ ๊ฒ€์ƒ‰์ด
    ๊ฐ€๋Šฅ
    --------------------------------------------------------------------------------------------
       ์ถœ๋ ฅ ๋ฐฉ์‹ CSS DSSSL XSL
    --------------------------------------------------------------------------------------------
       ๋ฐ์ดํ„ฐ ๊ตํ™˜ ๊ตํ™˜ ์‹œ ๋ถ€๊ฐ€๋˜๋Š” ํ‘œํ˜„๋ถ€์™€ ๋‚ด์šฉ๋ถ€๊ฐ€ SGML ๊ณผ ๋™์ผ
    ์ž‘์—…๋Ÿ‰์ด ๋ฐฉ๋Œ€ํ•จ ๋ถ„๋ฆฌ๋˜์–ด ๊ตํ™˜์ด ์šฉ์ดํ•จ
    --------------------------------------------------------------------------------------------

     



    โ—‹ XML ์‘์šฉ ๋ถ„์•ผ

       ๋ถ„์•ผ ๊ธฐ์ˆ  ๋‚ด์šฉ
    --------------------------------------------------------------------------------------------
       ์›น/์ธํ„ฐ๋„ท CDF ์›น ์บ์ŠคํŒ…(web casting)์„ ์œ„ํ•œ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ์ˆ ํ•˜๋Š” ํ˜•์‹
    ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์˜ ์•กํ‹ฐ๋ธŒ ์ฑ„๋„์„ ์œ„ํ•œ ์–ธ์–ด
    OSD ์†Œํ”„ํŠธ์›จ์–ด ๋ฐฐํฌ์™€ ์„ค์น˜๋ฅผ ์œ„ํ•œ ์ •๋ณด๋ฅผ ๊ธฐ์ˆ ํ•˜๊ธฐ ์œ„ํ•œ ํ˜•์‹
    --------------------------------------------------------------------------------------------
       ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ RDF ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ์ˆ ํ•˜๊ธฐ ์œ„ํ•œ ๋ฒ”์šฉ์  ๋ฐ์ดํ„ฐ ๊ธฐ์ˆ  ๋ฐฉ๋ฒ•
    ๊ธฐ์กด์˜ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ ๊ธฐ์ˆ  ๋ฐฉ๋ฒ•์„ ๋ชจ๋‘ ํฌํ•จ
    ์ตœ๊ทผ์—๋Š” ์‹œ๋งจํ‹ฑ ์›น์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ์ˆ  ์–ธ์–ด๋กœ ์‚ฌ์šฉ
    MCF ๋„ท์Šค์ผ€์ดํ”„์—์„œ ์ œ์•ˆํ•œ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ ๊ธฐ์ˆ  ๋ฐฉ๋ฒ•
    --------------------------------------------------------------------------------------------
       ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด SML ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ๋ฐ์ดํ„ฐ์˜ ๋™๊ธฐํ™”๋ฅผ ์œ„ํ•œ ์–ธ์–ด
       / ๊ทธ๋ž˜ํ”ฝ PGML 2D ๊ทธ๋ž˜ํ”ฝ ๋ฐ์ดํ„ฐ๋ฅผ ํ…์ŠคํŠธ ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•˜๋Š” ์–ธ์–ด
       / ์Šคํ”ผ์น˜ MusicML ์Œ์•… ์•…๋ณด๋ฅผ ์œ„ํ•œ ์–ธ์–ด
    ์•…๋ณด์— ์“ฐ์ด๋Š” ๋‹ค์–‘ํ•œ ๊ธฐํ˜ธ๋ฅผ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•œ ์–ธ์–ด
    JSML ๋ฌธ์„œํ™”ํ•œ ์ •๋ณด๋ฅผ ์Šคํ”ผ์ปค๋กœ ๋“ฃ๊ธฐ ์œ„ํ•ด์„œ SUN ์—์„œ ๋ฐœํ‘œํ–ˆ๋˜
    XML ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์–ธ์–ด
    --------------------------------------------------------------------------------------------
       ๋น„์ฆˆ๋‹ˆ์Šค OFX ๊ธˆ์œต ์ •๋ณด(ํ™”ํ ์ •๋ณด)๋ฅผ ๊ตํ™˜ํ•˜๊ธฐ ์œ„ํ•œ ์–ธ์–ด
       / ๊ธˆ์œต ML/EDI ์„œ๋กœ ๋‹ค๋ฅธ ํ™˜๊ฒฝ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ
    ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์ œ์•ˆ๋œ ์–ธ์–ด
    OTP ๊ฑฐ๋ž˜์™€ ๊ด€๋ จ๋œ ํ”„๋กœํ† ์ฝœ ์ •์˜
    ICE ๋น„์ฆˆ๋‹ˆ์Šค ์—…๊ณ„์˜ ์ •๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•œ ํ‘œ์ค€
    --------------------------------------------------------------------------------------------
       ๊ณผํ•™ MathML ์ˆ˜ํ•™ ๊ธฐํ˜ธ๋ฅผ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•œ ์–ธ์–ด
    CML ํ™”ํ•™์‹ ํ‘œ๊ธฐ๋ฅผ ์œ„ํ•œ ์–ธ์–ด
    BSML DNA ๊ตฌ์กฐ์™€ ๊ฐ™์€ ์ •๋ณด๋ฅผ ์ธ์ฝ”๋”ฉํ•˜๊ณ  ๋””์Šคํ”Œ๋ ˆ์ดํ•˜๊ธฐ ์œ„ํ•œ ์–ธ์–ด
    --------------------------------------------------------------------------------------------

     



    โ—‹ ๋งˆํฌ์—… ์–ธ์–ด

       - ํƒœ๊ทธ๋ฅผ ๊ฐ€์ง€๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ์–ธ์–ด
       - <์‹œ์ž‘ํƒœ๊ทธ>๋ฐ์ดํ„ฐ</๋ํƒœ๊ทธ> → ์—˜๋ฆฌ๋จผํŠธ

       - HTML ์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ํƒœ๊ทธ์˜ ์ข…๋ฅ˜๊ฐ€ ๋ฏธ๋ฆฌ ์ง€์ •๋˜์–ด ์žˆ๋Š” ์ƒํƒœ์ด๋‹ค.
         <div>, <table>, <br> ํƒœ๊ทธ ๋“ฑ์ด ์กด์žฌํ•œ๋‹ค.

       - XML ์€ ๋ฐ์ดํ„ฐ ํ˜•์‹์„ ํ‘œํ˜„ํ•˜๋Š” ์–ธ์–ด์ด๋‹ค.
         ํƒœ๊ทธ์˜ ์ข…๋ฅ˜๋ฅผ ์‚ฌ์šฉ์ž ์Šค์Šค๋กœ ์„ ํƒ, ๊ฒฐ์ •ํ•œ๋‹ค.
         <์ด๋ฆ„>๋…ธ์€ํ•˜</์ด๋ฆ„>
         <์ „ํ™”๋ฒˆํ˜ธ>010-1212-3434</์ „ํ™”๋ฒˆํ˜ธ>


    โ—‹ HTML ๊ณผ XML ๋ฌธ์„œ์˜ ๋‚ด์šฉ ๋น„๊ต

     


       - ์ด๋ฆ„, ์ „ํ™”๋ฒˆํ˜ธ, ์ด๋ฉ”์ผ ๋“ฑ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ณผ์ •์„

         HTML ๋ฐฉ์‹์œผ๋กœ ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

         <table>
          <tr>
             <td>์ด์ฃผํ˜•</td>
             <td>010-1212-3434</td>
             <td>Ljh@test.com</td>
          </tr>
         </table>



       - XML ๋ฐฉ์‹์œผ๋กœ ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

         <memberInfo mid="1">
            <name>์ด์ฃผํ˜•</name>
            <tel>010-1212-3434</tel>
            <email>Ljh@test.com</email>
         </memberInfo>

     



    โ—‹ XML ๋ฌธ์„œ ์ž‘์„ฑ์˜ ๊ธฐ๋ณธ ๊ทœ์น™

     

       - XML ๋ฌธ์„œ ์ƒ๋‹จ์—์„œ ์„ ์–ธ๋ถ€ ์ž‘์„ฑ

         <?xml version="1.0"?>
         <?xml version="1.0" encoding="UTF-8"?>



       - ๋ฃจํŠธ ์—˜๋ฆฌ๋จผํŠธ ์ง€์ •
         ๋ฃจํŠธ ์—˜๋ฆฌ๋จผํŠธ ์ด๋ฆ„์€ ์‚ฌ์šฉ์ž ์Šค์Šค๋กœ ๊ฒฐ์ •.
         ๋‚˜๋จธ์ง€ ๋ชจ๋“  ์—˜๋ฆฌ๋จผํŠธ๋Š” ๋ฃจํŠธ ์—˜๋ฆฌ๋จผํŠธ ํ•˜์œ„์—๋งŒ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค.

         <?xml version="1.0" encoding="UTF-8"?>
         <๋ฃจํŠธ>
         </๋ฃจํŠธ>



       - ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ €์žฅํ•  ๋•Œ ํ™•์žฅ์ž ใ€Ž.xmlใ€ ์‚ฌ์šฉ.

       - ์‹œ์ž‘ ํƒœ๊ทธ์™€ ๋ ํƒœ๊ทธ์— ์ง์„ ๋งž์ถ”์–ด ์‚ฌ์šฉ.

       - ํƒœ๊ทธ ๊ฐ„์˜ ํฌํ•จ ๊ด€๊ณ„๋ฅผ ์ด๋ฃจ์–ด์•ผ ํ•œ๋‹ค.
         (์ฆ‰, ๋ถ€๋ชจ ์ž์‹ ๊ด€๊ณ„ ์„ฑ๋ฆฝ)

       - ํƒœ๊ทธ์—๋Š” ์†์„ฑ ํ‘œํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
         (ใ€Ž์†์„ฑ="๊ฐ’"ใ€ ํ˜•ํƒœ๋กœ ํ‘œ๊ธฐํ•œ๋‹ค.)


     


    โ– โ– โ–  XML DTD(Document Type Definition) โ– โ– โ– 

     


    โ—‹ ๊ฐœ์š”

       XML ๋ฌธ์„œ์˜ ์—˜๋ฆฌ๋จผํŠธ, ์†์„œ์— ๋Œ€ํ•œ ๊ตฌ์กฐ(structure)๋ฅผ ํ‘œํ˜„ํ•œ ๋ฌธ์„œ.

       DTD(Document Type Definition)๋Š” ๋ฌธ์„œ์˜ ํ˜•ํƒœ๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฒƒ์œผ๋กœ
       XML ๋ฌธ์„œ์˜ ๊ตฌ์กฐ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์„ ์–ธํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋ฉฐ
       XML ๋ฌธ์„œ๊ฐ€ ์ž˜ ๋งŒ๋“ค์–ด์ง„ ์œ ํšจํ•œ(valid) ๋ฌธ์„œ์ธ์ง€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์„œ์ด๋‹ค.
       ๋”ฐ๋ผ์„œ, DTD ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์†Œ์™€ ์š”์†Œ์˜ ๋‚ด์šฉ, ์†์„ฑ๊ณผ ์†์„ฑ์˜ ๋‚ด์šฉ
       ๊ทธ๋ฆฌ๊ณ  ์š”์†Œ์˜ ์ˆœ์„œ๋‚˜ ๋ฐ˜๋ณต์„ฑ, ํ•„์ˆ˜์—ฌ๋ถ€ ๋“ฑ์„ ๋ฏธ๋ฆฌ ์ •ํ•ด๋†“๊ณ  XML ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
       ์ด๋ ‡๊ฒŒ ๋˜๋ฉด XML ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ์— ๋ฏธ๋ฆฌ ์ž˜๋ชป๋œ ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์‹ค์ˆ˜๋ฅผ
       ์ค„์ผ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.


    โ€ป ์œ ํšจํ•œ(valid) XML

       ์œ ํšจํ•œ(valid) XML ์€ well-formed XML ์„ ๋ณด๋‹ค ์—„๊ฒฉํ•˜๊ฒŒ ๊ฒ€์ฆํ•œ ๋ฌธ์„œ
                            ---------------         -------------
                              1์ฐจ ๊ฒ€์ฆ   1์ฐจ ๊ฒ€์ฆ
       ๊ธฐ๋ณธ์ ์ธ ์กฐ๊ฑด์œผ๋กœ ๋ชจ๋‘ well-formed ์ด์–ด์•ผ ํ•˜๋ฉฐ,
       ์ด์— ์ถ”๊ฐ€ํ•˜์—ฌ DTD ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , ์ด์— ๋”ฐ๋ผ ๊ฒ€์ฆ๋œ ๋ฌธ์„œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

    โ—‹ DTD ์ƒ˜ํ”Œ

    <!DOCTYPE ๋ฃจํŠธ์—˜๋ฆฌ๋จผํŠธ []>
    →
    <!DOCTYPE ๋ฃจํŠธ์—˜๋ฆฌ๋จผํŠธ 
    [
    <!ELEMENT ๋ฃจํŠธ์—˜๋ฆฌ๋จผํŠธ (1์ฐจํ•˜์œ„์—˜๋ฆฌ๋จผํŠธ ๋ชฉ๋ก)>
    <!ELEMENT 1์ฐจํ•˜์œ„์—˜๋ฆฌ๋จผํŠธ (2์ฐจํ•˜์œ„์—˜๋ฆฌ๋จผํŠธ ๋ชฉ๋ก)>
    <!ELEMENT 2์ฐจํ•˜์œ„์—˜๋ฆฌ๋จผํŠธ (#PCDATA)>
    <!ATTLIST 2์ฐจํ•˜์œ„์—˜๋ฆฌ๋จผํŠธ
              ์†์„ฑ์ด๋ฆ„ ์†์„ฑ๊ฐ’ ํ•„์ˆ˜์—ฌ๋ถ€
              ...>
    ]>
    ==> XML ๋ฌธ์„œ์— ๋Œ€ํ•œ ์„ค๊ณ„ ๊ณผ์ •



    โ—‹ DTD์™€ XML ๋ฌธ์„œ์˜ ๊ฒฐํ•ฉ

       - ๋ณ„๋„ ใ€Ž.DTDใ€ ํŒŒ์ผ์„ ์ž‘์„ฑํ•œ ํ›„ XML ๋ฌธ์„œ์™€ ์—ฐ๊ฒฐ

       // note.dtd
       <!DOCTYPE note 
       [
       <!ELEMENT note (to,from,heading,body)>
       <!ELEMENT to (#PCDATA)>
       <!ELEMENT from (#PCDATA)>
       <!ELEMENT heading (#PCDATA)>
       <!ELEMENT body (#PCDATA)>
       ]>



       - XML ๋ฌธ์„œ ๋‚ด๋ถ€์— ์‚ฝ์ž…

       // note.xml
       <?xml version="1.0" encoding="UTF-8"?> 
       <!DOCTYPE note SYSTEM "note.dtd">
       <note>
          <to>Tove</to>
          <from>Jani</from>
          <heading>Reminder</heading>
          <body>Do not forget me this weekend</body>
       </note>

     



    F_XmlApp01: xml ์ž‘์„ฑ

    ใ„ด/XmlApp01/WebContent

    ใ„ดใ„ดmemberList.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <memberList>
    	<!-- ๋ฃจํŠธ ์—˜๋ฆฌ๋จผํŠธ๋Š” ํ•˜๋‚˜ -->
    	<!-- ๋ฃจํŠธ ์—˜๋ฆฌ๋จผํŠธ์˜ ์ด๋ฆ„์€ ใ€Ž~~~.xmlใ€ ํŒŒ์ผ ์ด๋ฆ„๊ณผ ๋™์ผํ•œ ์ด๋ฆ„ ์‚ฌ์šฉ(๊ถŒ์žฅ) -->
    	<!-- ๋ณต์ˆ˜(๋‹ค์ˆ˜)์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ ์ค‘๊ฐ„์— ์ ์ ˆํ•œ ๋ถ€๋ชจ ํƒœ๊ทธ ์ง€์ • -->
    	<!-- ์—˜๋ฆฌ๋จผํŠธ ํ•˜์œ„์—๋Š” ์—˜๋ฆฌ๋จผํŠธ(๋˜๋Š” ๋ฐ์ดํ„ฐ)๋งŒ ๊ตฌ์„ฑ -->
    	<!-- ํŠน์ˆ˜๋ฌธ์ž(-, &, ..)๊ฐ€ ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ์ธ ๊ฒฝ์šฐ ใ€ŽCDATA ์„น์…˜ใ€์œผ๋กœ ์ฒ˜๋ฆฌ -->
    	<!-- ์‹œ์ž‘ ํƒœ๊ทธ์™€ ๋ ํƒœ๊ทธ์˜ ์ด๋ฆ„์ด ๋Œ€์†Œ๋ฌธ์ž๊นŒ์ง€ ์™„๋ฒฝํ•˜๊ฒŒ ์ผ์น˜ -->
    	<!-- ๋ชจ๋“  ํƒœ๊ทธ์˜ ์—ด๊ณ  ๋‹ซ๋Š” ์ˆœ์„œ๊ฐ€ ์ •ํ™•ํ•˜๊ฒŒ ์ฒ˜๋ฆฌ -->
    	<!-- ์†์„ฑ์˜ ์†์„ฑ๊ฐ’์ด ใ€Ž""ใ€๋กœ ๊ตฌ์„ฑ -->
    	
    	<!-- ↑ ์œ„ ์กฐ๊ฑด๋“ค์ด ์ง€์ผœ์ง€์ง€ ์•Š์œผ๋ฉด xml ํŒŒ์ผ์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ์„ ์œ ์˜ํ•˜๊ธฐ -->
    	
    	<!-- ํƒœ๊ทธ์™€ ํƒœ๊ทธ ์‚ฌ์ด์˜ ๋ฐ์ดํ„ฐ๋Š” PCDATA (Parsed Character DATA) ์ธ๋ฐ
    	     ํŠน์ˆ˜๋ฌธ์ž๊ฐ€ ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ๋Š” CDATA ์„น์…˜์— ํฌํ•จ์‹œ์ผœ ๋ฌธ์ž ๊ทธ๋Œ€๋กœ๋ฅผ
    	     ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค. -->
    	
    	<memberInfo mid="1">
    		<name>๋…ธ์€ํ•˜</name>
    		<telephone><![CDATA[010-1234-4567]]></telephone>
    		<curriculumn>
    			<sub>JAVA SE</sub>
    			<sub>ORACLE</sub>
    			<sub><![CDATA[Servlet&JSP]]></sub>
    		</curriculumn>
    		<zipCode>01234</zipCode>
    		<addr>์„œ์šธ์‹œ ๋งˆํฌ๊ตฌ ์›”๋“œ์ปต๋ถ๋กœ 150</addr>
    	</memberInfo>
    </memberList>

    ใ„ดใ„ดmemList.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <memList>
    	<!-- memList.xml -->
    	
    	<!-- โ€ป ์Šค์Šค๋กœ(๋ณธ์ธ)์˜ ์ •๋ณด๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์„œ ์ž‘์„ฑ -->
    	<!--    (+ ์šฐ๋ฆฌ ํŒ€์›๋“ค) -->
    	<memberInfo mid="1">
    		<name>๋ฐ•๋‚˜์˜</name>
    		<telephone><![CDATA[010-1111-1111]]></telephone>
    		<curriculumn>
    			<sub>JAVA SE</sub>
    			<sub>ORACLE</sub>
    			<sub><![CDATA[Servlet&JSP]]></sub>
    		</curriculumn>
    		<zipCode>03995</zipCode>
    		<addr>์„œ์šธ์‹œ ๋™์ž‘๊ตฌ ์ƒ๋„๋™</addr>
    	</memberInfo>
    	<memberInfo mid="2">
    		<name>์˜ค์ˆ˜๊ฒฝ</name>
    		<telephone><![CDATA[010-2222-2222]]></telephone>
    		<curriculumn>
    			<sub>JAVA SE</sub>
    			<sub>ORACLE</sub>
    			<sub><![CDATA[Servlet&JSP]]></sub>
    		</curriculumn>
    		<zipCode>04031</zipCode>
    		<addr>์„œ์šธ์‹œ ์ค‘๋ž‘๊ตฌ ๋ฉด๋ชฉ๋™</addr>
    	</memberInfo>
    	<memberInfo mid="3">
    		<name>๋ฌธ์ •ํ™˜</name>
    		<telephone><![CDATA[010-3333-3333]]></telephone>
    		<curriculumn>
    			<sub>JAVA SE</sub>
    			<sub>ORACLE</sub>
    			<sub><![CDATA[Servlet&JSP]]></sub>
    		</curriculumn>
    		<zipCode>03992</zipCode>
    		<addr>์ธ์ฒœ ๋‚จ๋™๊ตฌ ๋‚จ์ดŒ๋™</addr>
    	</memberInfo>
    	<memberInfo mid="4">
    		<name>์ด์ฃผํ˜•</name>
    		<telephone><![CDATA[010-4444-4444]]></telephone>
    		<curriculumn>
    			<sub>JAVA SE</sub>
    			<sub>ORACLE</sub>
    			<sub><![CDATA[Servlet&JSP]]></sub>
    		</curriculumn>
    		<zipCode>04001</zipCode>
    		<addr>๊ฒฝ๊ธฐ๋„ ํ™”์„ฑ์‹œ ๋™ํƒ„ ๋ชฉ๋™</addr>
    	</memberInfo>
    	<memberInfo mid="5">
    		<name>์ž„ํ•˜์„ฑ</name>
    		<telephone><![CDATA[010-5555-5555]]></telephone>
    		<curriculumn>
    			<sub>JAVA SE</sub>
    			<sub>ORACLE</sub>
    			<sub><![CDATA[Servlet&JSP]]></sub>
    		</curriculumn>
    		<zipCode>04000</zipCode>
    		<addr>์„œ์šธ์‹œ ๊ฐ•๋ถ๊ตฌ ๋ฏธ์•„๋™</addr>
    	</memberInfo>
    	<memberInfo mid="6">
    		<name>์—„์žฌ์šฉ</name>
    		<telephone><![CDATA[010-6666-6666]]></telephone>
    		<curriculumn>
    			<sub>JAVA SE</sub>
    			<sub>ORACLE</sub>
    			<sub><![CDATA[Servlet&JSP]]></sub>
    		</curriculumn>
    		<zipCode>03991</zipCode>
    		<addr>์„œ์šธ์‹œ ๊ด€์•…๊ตฌ ์‹ ๋ฆผ๋™</addr>
    	</memberInfo>
    </memList>

    ใ„ดใ„ดxmlTest01.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <xmlTest01>
    	<!-- ์„ ์–ธ๋ถ€์™€ ๋ฃจํŠธ๋งŒ ์กด์žฌํ•˜๋Š” XML ๋ฌธ์„œ ์ž‘์„ฑ -->
    	<!-- ๋ฃจํŠธ ์—˜๋ฆฌ๋จผํŠธ(xmlTest01)๋„ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒฐ์ • -->
    	<!-- XML ์€ ํ”„๋กœ๊ทธ๋žจ์ด ์•„๋‹ˆ๊ณ , ๋ฐ์ดํ„ฐ ํ‘œํ˜„ ๋ฌธ์„œ์ผ ๋ฟ์ด๋‹ค. -->
    	<!-- ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ํ•˜์œ„ ์—˜๋ฆฌ๋จผํŠธ ์ถ”๊ฐ€ - ๋งˆํฌ์—… ์–ธ์–ด ๊ธฐ๋ณธ ํ˜•์‹ -->
    </xmlTest01>

    F_XmlApp02: DTD ์ถ”๊ฐ€

    ใ„ด/XmlApp02/WebContent

    ใ„ดใ„ดmemberList.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- DTD์ถ”๊ฐ€ -->
    <!DOCTYPE memberList 
    [
    <!ELEMENT memberList (memberInfo+)>
    <!ELEMENT memberInfo (name,telephone,curriculumn?,zipCode,addr)>
    <!-- name: ๋‹จ์ผ์—˜๋ฆฌ๋จผํŠธ ์ผ ๊ฒฝ์šฐ-->
    <!-- name+: ์—ฌ๋Ÿฌ๊ฐœ์ผ ๊ฒฝ์šฐ -->
    <!-- name?: ์žˆ๊ธฐ๋„ ํ•˜๊ณ , ์—†๊ธฐ๋„ ํ•  ๊ฒฝ์šฐ -->
    <!ELEMENT name (#PCDATA)>
    <!ELEMENT telephone (#PCDATA)>
    <!ELEMENT curriculumn (sub+)>
    <!ELEMENT sub (#PCDATA)>
    <!ELEMENT zipCode (#PCDATA)>
    <!ELEMENT addr (#PCDATA)>
    <!ATTLIST memberInfo mid CDATA #REQUIRED>
    ]>
    
    <!-- #REQUIRED: ์ด ์†์„ฑ์€ ๋ฐ˜๋“œ์‹œ ๋ช…์‹œ๋˜์–ด์•ผ ํ•œ๋‹ค. -->
    <!-- #IMPLIED: ์ด ์†์„ฑ์€ ๋ช…์‹œ๋˜๊ธฐ๋„ ํ•˜๊ณ , ๋ช…์‹œ๋˜์ง€ ์•Š๊ธฐ๋„ ํ•œ๋‹ค. -->
    <!-- #FIXED ํŠน์ •๊ฐ’: ์ด ์†์„ฑ์€ ํŠน์ •๊ฐ’์œผ๋กœ ๊ณ ์ •๋˜์–ด ์‚ฌ์šฉ๋œ๋‹ค. -->
    
    <memberList>	
    	<memberInfo mid="1">
    		<name>๋…ธ์€ํ•˜</name>
    		<telephone><![CDATA[010-1234-4567]]></telephone>
    		<curriculumn>
    			<sub>JAVA SE</sub>
    			<sub>ORACLE</sub>
    			<sub><![CDATA[Servlet&JSP]]></sub>
    		</curriculumn>
    		<zipCode>01234</zipCode>
    		<addr>์„œ์šธ์‹œ ๋งˆํฌ๊ตฌ ์›”๋“œ์ปต๋ถ๋กœ 150</addr>
    	</memberInfo>
    	
    	<memberInfo mid="2">
    		<name>๊น€๋ฏผ์ง€</name>
    		<telephone><![CDATA[010-9987-8876]]></telephone>
    		<curriculumn>
    			<sub>HTML</sub>
    			<sub>CSS</sub>
    			<sub>Javascript</sub>
    		</curriculumn>
    		<zipCode>01285</zipCode>
    		<addr>์„œ์šธ์‹œ ์€ํ‰๊ตฌ ํ†ต์ผ๋กœ 20</addr>
    	</memberInfo>
    	
    </memberList>

    ใ„ดใ„ดmemList.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE memList 
    [
    <!ELEMENT memList (memberInfo+)>
    <!ELEMENT memberInfo (name, telephone, curriculumn, zipCode, addr, email?)>
    <!ELEMENT name (#PCDATA)>
    <!ELEMENT telephone (#PCDATA)>
    <!ELEMENT curriculumn (sub+)>
    <!ELEMENT sub (#PCDATA)>
    <!ELEMENT zipCode (#PCDATA)>
    <!ELEMENT addr (#PCDATA)>
    <!ATTLIST memberInfo mid CDATA #REQUIRED>
    <!ELEMENT email (#PCDATA)>
    ]>
    
    <memList>
    	<!-- memList.xml -->
    	
    	<!-- โ€ป ์Šค์Šค๋กœ(๋ณธ์ธ)์˜ ์ •๋ณด๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์„œ ์ž‘์„ฑ -->
    	<!--    (+ ์šฐ๋ฆฌ ํŒ€์›๋“ค) -->
    	<memberInfo mid="1">
    		<name>๋ฐ•๋‚˜์˜</name>
    		<telephone><![CDATA[010-1111-1111]]></telephone>
    		<curriculumn>
    			<sub>JAVA SE</sub>
    			<sub>ORACLE</sub>
    			<sub><![CDATA[Servlet&JSP]]></sub>
    		</curriculumn>
    		<zipCode>03995</zipCode>
    		<addr>์„œ์šธ์‹œ ๋™์ž‘๊ตฌ ์ƒ๋„๋™</addr>
    		<email><![CDATA[na@gmail.com]]></email>
    	</memberInfo>
    	<memberInfo mid="2">
    		<name>์˜ค์ˆ˜๊ฒฝ</name>
    		<telephone><![CDATA[010-2222-2222]]></telephone>
    		<curriculumn>
    			<sub>JAVA SE</sub>
    			<sub>ORACLE</sub>
    			<sub><![CDATA[Servlet&JSP]]></sub>
    		</curriculumn>
    		<zipCode>04031</zipCode>
    		<addr>์„œ์šธ์‹œ ์ค‘๋ž‘๊ตฌ ๋ฉด๋ชฉ๋™</addr>
    		<email><![CDATA[su@gmail.com]]></email>
    	</memberInfo>
    	<memberInfo mid="3">
    		<name>๋ฌธ์ •ํ™˜</name>
    		<telephone><![CDATA[010-3333-3333]]></telephone>
    		<curriculumn>
    			<sub>JAVA SE</sub>
    			<sub>ORACLE</sub>
    			<sub><![CDATA[Servlet&JSP]]></sub>
    		</curriculumn>
    		<zipCode>03992</zipCode>
    		<addr>์ธ์ฒœ ๋‚จ๋™๊ตฌ ๋‚จ์ดŒ๋™</addr>
    	</memberInfo>
    	<memberInfo mid="4">
    		<name>์ด์ฃผํ˜•</name>
    		<telephone><![CDATA[010-4444-4444]]></telephone>
    		<curriculumn>
    			<sub>JAVA SE</sub>
    			<sub>ORACLE</sub>
    			<sub><![CDATA[Servlet&JSP]]></sub>
    		</curriculumn>
    		<zipCode>04001</zipCode>
    		<addr>๊ฒฝ๊ธฐ๋„ ํ™”์„ฑ์‹œ ๋™ํƒ„ ๋ชฉ๋™</addr>
    	</memberInfo>
    	<memberInfo mid="5">
    		<name>์ž„ํ•˜์„ฑ</name>
    		<telephone><![CDATA[010-5555-5555]]></telephone>
    		<curriculumn>
    			<sub>JAVA SE</sub>
    			<sub>ORACLE</sub>
    			<sub><![CDATA[Servlet&JSP]]></sub>
    		</curriculumn>
    		<zipCode>04000</zipCode>
    		<addr>์„œ์šธ์‹œ ๊ฐ•๋ถ๊ตฌ ๋ฏธ์•„๋™</addr>
    	</memberInfo>
    	<memberInfo mid="6">
    		<name>์—„์žฌ์šฉ</name>
    		<telephone><![CDATA[010-6666-6666]]></telephone>
    		<curriculumn>
    			<sub>JAVA SE</sub>
    			<sub>ORACLE</sub>
    			<sub><![CDATA[Servlet&JSP]]></sub>
    		</curriculumn>
    		<zipCode>03991</zipCode>
    		<addr>์„œ์šธ์‹œ ๊ด€์•…๊ตฌ ์‹ ๋ฆผ๋™</addr>
    	</memberInfo>
    </memList>

     


    F_XmlApp03: HTML๋กœ ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ ๋ถ„๋ฆฌ(๊ด€์ฐฐ)

    ใ„ด/XmlApp03/WebContent

    ใ„ดใ„ดkoreanMajorCities.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <koreanMajorCities>
    	<city>
    		<name>์„œ์šธ</name>
    		<class>ํŠน๋ณ„์‹œ</class>
    	</city>
    	<city>
    		<name>๋ถ€์‚ฐ</name>
    		<class>๊ด‘์—ญ์‹œ</class>
    	</city>
    	<city>
    		<name>์ธ์ฒœ</name>
    		<class>๊ด‘์—ญ์‹œ</class>
    	</city>
    	<city>
    		<name>๋Œ€์ „</name>
    		<class>๊ด‘์—ญ์‹œ</class>
    	</city>
    	<city>
    		<name>๊ด‘์ฃผ</name>
    		<class>๊ด‘์—ญ์‹œ</class>
    	</city>
    	<city>
    		<name>์šธ์‚ฐ</name>
    		<class>๊ด‘์—ญ์‹œ</class>
    	</city>
    	<city>
    		<name>์ˆ˜์›</name>
    		<class>์‹œ</class>
    	</city>
    	<city>
    		<name>์ฒญ์ฃผ</name>
    		<class>์‹œ</class>
    	</city>
    	<city>
    		<name>๋ชฉํฌ</name>
    		<class>์‹œ</class>
    	</city>
    </koreanMajorCities>

    ใ„ดใ„ดXmlApp03.html

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>XmlApp03.html</title>
    <style type="text/css">
    table, th, td {
    	border: 1px solid gray;
    	border-collapse: collapse;
    }
    </style>
    <script type="text/javascript">
    	function loadDoc()
    	{
    		// ํ™•์ธ
    		//alert("ํ•จ์ˆ˜ ํ˜ธ์ถœํ™•์ธ");
    		
    		var xmlHttp = new XMLHttpRequest();
    		xmlHttp.onreadystatechange = function()
    		{
    			if(this.status==200 && this.readyState==4)
    			{
    				// ์—…๋ฌด ์ฒ˜๋ฆฌ
    				displayData(xmlHttp);
    			}
    		}
    		xmlHttp.open("GET", "koreanMajorCities.xml", "true");
    		xmlHttp.send("");
    	}
    	
    	function displayData(xmlHttp)
    	{
    		//alert("ํ•จ์ˆ˜ ํ˜ธ์ถœํ™•์ธ!");
    		var xmlObj, cityList, result, ids;
    		xmlObj = xmlHttp.responseXML;		//-- ์š”์ฒญํ•œ ๋ฐ์ดํ„ฐ๋ฅผ XML DOM ๊ฐ์ฒด๋กœ ๋ฐ˜ํ™˜.
    		result = "<table><tr><th>๋„์‹œ ์ด๋ฆ„</th><th>ํ–‰์ •๊ตฌ์—ญ</th></tr>";
    		cityList = xmlObj.getElementsByTagName("city");
    		for(idx=0; idx<cityList.length; idx++)
    		{
    			result +="<tr><td>"
    				+ cityList[idx].getElementsByTagName("name")[0].childNodes[0].nodeValue
    				+ "</td><td>"
    				+ cityList[idx].getElementsByTagName("class")[0].childNodes[0].nodeValue
    				+ "</td></tr>";
    		}
    		result += "</table>";
    		
    		document.getElementById("text").innerHTML = result;
    	}
    </script>
    
    
    </head>
    <body>
    
    
    
    <div>
    	<h1>HTML๋กœ ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ ๋ถ„๋ฆฌ(๊ด€์ฐฐ)</h1>
    </div>
    
    <div>
    	<button type="button" onclick="loadDoc()">xml ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ</button>
    	<p id="text"></p>
    </div>
    
    </body>
    </html>

    F_XmlApp04: XML ํŒŒ์ผ์„ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ → XML DOM ํ˜•์„ฑ

    ใ„ดbreakfast_menu.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <breakfast_menu>
    	<food>
    		<name>Belgian Waffles</name>
    		<price>$5.95</price>
    		<description>Two of our famous Belgian Waffles with plenty of real maple syrup</description>
    		<calories>650</calories>
    	</food>
    	<food>
    		<name>Strawberry Belgian Waffles</name>
    		<price>$7.95</price>
    		<description>Light Belgian waffles covered with strawberries and whipped cream</description>
    		<calories>900</calories>
    	</food>
    	<food>
    		<name>Berry-Berry Belgian Waffles</name>
    		<price>$8.95</price>
    		<description>Light Belgian waffles covered with an assortment of fresh berries and whipped cream</description>
    		<calories>900</calories>
    	</food>
    	<food>
    		<name>French Toast</name>
    		<price>$4.50</price>
    		<description>Thick slices made from our homemade sourdough bread</description>
    		<calories>600</calories>
    	</food>
    	<food>
    		<name>Homestyle Breakfast</name>
    		<price>$6.95</price>
    		<description>Two eggs, bacon or sausage, toast, and our ever-popular hash browns</description>
    		<calories>950</calories>
    	</food>
    </breakfast_menu>

    ใ„ดVEHICLES.xml

    <?xml version="1.0" encoding="utf-8"?>
    <VEHICLES>
    	<LAST_INVENTORY_NUMBER>11</LAST_INVENTORY_NUMBER>
    	<VEHICLE>
    		<INVENTORY_NUMBER>1</INVENTORY_NUMBER>
    		<MAKE>Dodge</MAKE>
    		<MODEL>Durango</MODEL>
    		<YEAR>1998</YEAR>
    		<PICTURE>DodgeDurango.jpg</PICTURE>
    		<STYLE>Sport Utility</STYLE>
    		<DOORS>4</DOORS>
    		<PRICE>18000</PRICE>
    		<MILEAGE>32000</MILEAGE>
    		<OPTIONS>
    			<Power_Locks>Yes</Power_Locks>
    			<Power_Window>Yes</Power_Window>
    			<Stereo>Radio/Cassette/CD</Stereo>
    			<Air_Conditioning>Yes</Air_Conditioning>
    			<Automatic>Yes</Automatic>
    			<Four_Wheel_Drive>Full/Partial</Four_Wheel_Drive>
    			<Note>Very clean</Note>
    		</OPTIONS>
    		<OWNER>
    			<NAME>Douglas Briggs </NAME>
    			<EMAIL>DBriggs@aDomain.Com</EMAIL>
    			<PHONE>781 781 7811</PHONE>
    		</OWNER>
    	</VEHICLE>
    	<VEHICLE>
    		<INVENTORY_NUMBER>2</INVENTORY_NUMBER>
    		<MAKE>Honda</MAKE>
    		<MODEL>Civic</MODEL>
    		<YEAR>1997</YEAR>
    		<PICTURE>HondaCivic.jpg</PICTURE>
    		<PRICE_YEN>20000000</PRICE_YEN>
    		<STYLE>Sedan</STYLE>
    		<DOORS>4</DOORS>
    		<PRICE>8000</PRICE>
    		<MILEAGE>56000</MILEAGE>
    		<OPTIONS>
    			<Power_Locks>Yes</Power_Locks>
    			<Power_Window>Yes</Power_Window>
    			<Stereo>Radio/Cassette</Stereo>
    			<Automatic>Yes</Automatic>
    			<Note>Like New</Note>
    		</OPTIONS>
    		<OWNER>
    			<NAME>Israel Hodgson </NAME>
    			<EMAIL>IHodgson@aDomain.Com</EMAIL>
    			<PHONE>781 781 782</PHONE>
    		</OWNER>
    	</VEHICLE>
    	<VEHICLE>
    		<INVENTORY_NUMBER>3</INVENTORY_NUMBER>
    		<MAKE>Dodge</MAKE>
    		<MODEL>Neon</MODEL>
    		<YEAR>1996</YEAR>
    		<PICTURE>DodgeNeon.jpg</PICTURE>
    		<STYLE>Sedan</STYLE>
    		<DOORS>4</DOORS>
    		<PRICE>7000</PRICE>
    		<MILEAGE>55000</MILEAGE>
    		<OPTIONS>
    			<Stereo>Radio/Cassette</Stereo>
    			<Automatic>Yes</Automatic>
    			<Note>Need minor body works</Note>
    		</OPTIONS>
    		<OWNER>
    			<NAME>Arthur Shin </NAME>
    			<EMAIL>IHodgson@aDomain.Com</EMAIL>
    			<PHONE>781 781 782</PHONE>
    		</OWNER>
    	</VEHICLE>
    	<VEHICLE>
    		<INVENTORY_NUMBER>4</INVENTORY_NUMBER>
    		<MAKE>Ferrari</MAKE>
    		<MODEL>F355</MODEL>
    		<YEAR>1995</YEAR>
    		<PICTURE>FerrariF355.jpg</PICTURE>
    		<STYLE>Sport</STYLE>
    		<DOORS>2</DOORS>
    		<PRICE>45000</PRICE>
    		<MILEAGE>63000</MILEAGE>
    		<OPTIONS>
    			<Power_Locks>Yes</Power_Locks>
    			<Power_Window>Yes</Power_Window>
    			<Stereo>Radio/Cassette/CD</Stereo>
    			<Air_Conditioning>Yes</Air_Conditioning>
    			<Note>Luxury car</Note>
    		</OPTIONS>
    		<OWNER>
    			<NAME>Jungchul Frye</NAME>
    			<EMAIL>JFrye@aDomain.Com</EMAIL>
    			<PHONE>781 781 782</PHONE>
    		</OWNER>
    	</VEHICLE>
    	<VEHICLE>
    		<INVENTORY_NUMBER>5</INVENTORY_NUMBER>
    		<MAKE>BMW</MAKE>
    		<MODEL>3 Series</MODEL>
    		<YEAR>1998</YEAR>
    		<PICTURE>BMWSeries3.jpg</PICTURE>
    		<STYLE>Sedan</STYLE>
    		<DOORS>4</DOORS>
    		<PRICE>40000</PRICE>
    		<MILEAGE>12000</MILEAGE>
    		<OPTIONS>
    			<Power_Locks>Yes</Power_Locks>
    			<Power_Window>Yes</Power_Window>
    			<Interiors>Leather</Interiors>
    			<Stereo>Radio/Cassette/CD</Stereo>
    			<Air_Conditioning>Yes</Air_Conditioning>
    			<Note>Pre-owned</Note>
    		</OPTIONS>
    		<OWNER>
    			<NAME>Bill Pease</NAME>
    			<EMAIL>BPease@aDomain.Com</EMAIL>
    			<PHONE>781 781 782</PHONE>
    		</OWNER>
    	</VEHICLE>
    	<VEHICLE>
    		<INVENTORY_NUMBER>6</INVENTORY_NUMBER>
    		<MAKE>BMW</MAKE>
    		<MODEL>Z3</MODEL>
    		<YEAR>1998</YEAR>
    		<PICTURE>BMWZ3.jpg</PICTURE>
    		<STYLE>Convertible</STYLE>
    		<DOORS>2</DOORS>
    		<PRICE>33000</PRICE>
    		<MILEAGE>24000</MILEAGE>
    		<OPTIONS>
    			<Cover_Material>Plastic</Cover_Material>
    			<Power_Locks>Yes</Power_Locks>
    			<Power_Window>Yes</Power_Window>
    			<Alarm>Yes</Alarm>
    			<Interiors>Fabric</Interiors>
    			<Stereo>Radio/Cassette/CD</Stereo>
    			<Air_Conditioning>Yes</Air_Conditioning>
    			<Note>Pre-owned, very clean</Note>
    		</OPTIONS>
    		<OWNER>
    			<NAME>Scott Tufo</NAME>
    			<EMAIL>STufo@aDomain.Com</EMAIL>
    			<PHONE>781 781 783</PHONE>
    		</OWNER>
    	</VEHICLE>
    	<VEHICLE>
    		<INVENTORY_NUMBER>7</INVENTORY_NUMBER>
    		<MAKE>Dodge</MAKE>
    		<MODEL>RAM</MODEL>
    		<YEAR>1997</YEAR>
    		<PICTURE>DodgeRAM1500.jpg</PICTURE>
    		<STYLE>Truck</STYLE>
    		<DOORS>2</DOORS>
    		<PRICE>22000</PRICE>
    		<MILEAGE>45000</MILEAGE>
    		<OPTIONS>
    			<Stereo>Radio</Stereo>
    			<Max_Load>1500</Max_Load>
    			<Note>Heavy duty Vehicle</Note>
    		</OPTIONS>
    		<OWNER>
    			<NAME>Dealer</NAME>
    		</OWNER>
    	</VEHICLE>
    	<VEHICLE>
    		<INVENTORY_NUMBER>8</INVENTORY_NUMBER>
    		<MAKE>Honda</MAKE>
    		<MODEL>Accord</MODEL>
    		<YEAR>1995</YEAR>
    		<PICTURE>HondaAccord.jpg</PICTURE>
    		<PRICE_YEN>25000000</PRICE_YEN>
    		<STYLE>Sedan</STYLE>
    		<DOORS>4</DOORS>
    		<PRICE>8500</PRICE>
    		<MILEAGE>145000</MILEAGE>
    		<OPTIONS>
    			<Power_Locks>Yes</Power_Locks>
    			<Stereo>Radio/Cassette</Stereo>
    			<Automatic>Yes</Automatic>
    		</OPTIONS>
    		<OWNER>
    			<NAME>Bob Johnson</NAME>
    			<PHONE>781 781 783</PHONE>
    		</OWNER>
    	</VEHICLE>
    	<VEHICLE>
    		<INVENTORY_NUMBER>9</INVENTORY_NUMBER>
    		<MAKE>Dodge</MAKE>
    		<MODEL>RAM 2500</MODEL>
    		<YEAR>1996</YEAR>
    		<PICTURE>DodgeRAM2500.jpg</PICTURE>
    		<STYLE>Truck</STYLE>
    		<DOORS>2</DOORS>
    		<PRICE>25000</PRICE>
    		<MILEAGE>23000</MILEAGE>
    		<OPTIONS>
    			<Stereo>Radio/Cassette</Stereo>
    			<Max_Load>2500</Max_Load>
    			<Note>Heavy duty truck</Note>
    		</OPTIONS>
    		<OWNER>
    			<NAME>Pia Kinnear</NAME>
    			<EMAIL>PKinnearo@aDomain.Com</EMAIL>
    			<PHONE>781 781 784</PHONE>
    		</OWNER>
    	</VEHICLE>
    	<VEHICLE>
    		<INVENTORY_NUMBER>10</INVENTORY_NUMBER>
    		<MAKE>Ford</MAKE>
    		<MODEL>Explorer</MODEL>
    		<YEAR>1996</YEAR>
    		<PICTURE>FordExplorer.jpg</PICTURE>
    		<STYLE>Sport Utility</STYLE>
    		<DOORS>4</DOORS>
    		<PRICE>18000</PRICE>
    		<MILEAGE>105000</MILEAGE>
    		<OPTIONS>
    			<Power_Locks>Yes</Power_Locks>
    			<Stereo>Radio/Cassette</Stereo>
    			<Automatic>Yes</Automatic>
    			<Interiors>Fabric</Interiors>
    			<Air_Conditioning>Yes</Air_Conditioning>
    			<Note>Pre-owned, very clean</Note>
    		</OPTIONS>
    		<OWNER>
    			<NAME>Shawn Denoncour</NAME>
    			<EMAIL>SDenoncour@aDomain.Com</EMAIL>
    			<PHONE>781 781 785</PHONE>
    		</OWNER>
    	</VEHICLE>
    </VEHICLES>

    ใ„ดmemberList.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- DTD์ถ”๊ฐ€ -->
    <!DOCTYPE memberList 
    [
    <!ELEMENT memberList (memberInfo+)>
    <!ELEMENT memberInfo (name+,telephone+,curriculumn?,zipCode,addr)> <!-- *****ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ์ˆ˜์ • -->
    <!-- name: ๋‹จ์ผ์—˜๋ฆฌ๋จผํŠธ ์ผ ๊ฒฝ์šฐ-->
    <!-- name+: ์—ฌ๋Ÿฌ๊ฐœ์ผ ๊ฒฝ์šฐ -->
    <!-- name?: ์žˆ๊ธฐ๋„ ํ•˜๊ณ , ์—†๊ธฐ๋„ ํ•  ๊ฒฝ์šฐ -->
    <!ELEMENT name (#PCDATA)>
    <!ELEMENT telephone (#PCDATA)>
    <!ELEMENT curriculumn (sub+)>
    <!ELEMENT sub (#PCDATA)>
    <!ELEMENT zipCode (#PCDATA)>
    <!ELEMENT addr (#PCDATA)>
    <!ATTLIST memberInfo mid CDATA #REQUIRED>
    ]>
    
    <!-- #REQUIRED: ์ด ์†์„ฑ์€ ๋ฐ˜๋“œ์‹œ ๋ช…์‹œ๋˜์–ด์•ผ ํ•œ๋‹ค. -->
    <!-- #IMPLIED: ์ด ์†์„ฑ์€ ๋ช…์‹œ๋˜๊ธฐ๋„ ํ•˜๊ณ , ๋ช…์‹œ๋˜์ง€ ์•Š๊ธฐ๋„ ํ•œ๋‹ค. -->
    <!-- #FIXED ํŠน์ •๊ฐ’: ์ด ์†์„ฑ์€ ํŠน์ •๊ฐ’์œผ๋กœ ๊ณ ์ •๋˜์–ด ์‚ฌ์šฉ๋œ๋‹ค. -->
    
    <memberList>	
    	<memberInfo mid="1">
    		<name>๋…ธ์€ํ•˜</name>
    		<name>์จฉ</name> <!-- *****ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ์ถ”๊ฐ€ -->
    		<telephone><![CDATA[010-1234-4567]]></telephone>
    		<telephone><![CDATA[010-1234-4567]]></telephone> <!-- *****ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ์ถ”๊ฐ€ -->
    		<curriculumn>
    			<sub>JAVA SE</sub>
    			<sub>ORACLE</sub>
    			<sub><![CDATA[Servlet&JSP]]></sub>
    		</curriculumn>
    		<zipCode>01234</zipCode>
    		<addr>์„œ์šธ์‹œ ๋งˆํฌ๊ตฌ ์›”๋“œ์ปต๋ถ๋กœ 150</addr>
    	</memberInfo>
    	
    	<memberInfo mid="2">
    		<name>๊น€๋ฏผ์ง€</name>
    		<name>๋ฎŒ์ฅ</name>
    		<telephone><![CDATA[010-9987-8876]]></telephone>
    		<telephone><![CDATA[010-9987-8876]]></telephone>
    		<curriculumn>
    			<sub>HTML</sub>
    			<sub>CSS</sub>
    			<sub>Javascript</sub>
    		</curriculumn>
    		<zipCode>01285</zipCode>
    		<addr>์„œ์šธ์‹œ ์€ํ‰๊ตฌ ํ†ต์ผ๋กœ 20</addr>
    	</memberInfo>
    	
    </memberList>

    ใ„ดmemList.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE memList 
    [
    <!ELEMENT memList (memberInfo+)>
    <!ELEMENT memberInfo (name, telephone, curriculumn, zipCode, addr, email?)>
    <!ELEMENT name (#PCDATA)>
    <!ELEMENT telephone (#PCDATA)>
    <!ELEMENT curriculumn (sub+)>
    <!ELEMENT sub (#PCDATA)>
    <!ELEMENT zipCode (#PCDATA)>
    <!ELEMENT addr (#PCDATA)>
    <!ATTLIST memberInfo mid CDATA #REQUIRED>
    <!ELEMENT email (#PCDATA)>
    ]>
    
    <memList>
    	<!-- memList.xml -->
    	
    	<!-- โ€ป ์Šค์Šค๋กœ(๋ณธ์ธ)์˜ ์ •๋ณด๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์„œ ์ž‘์„ฑ -->
    	<!--    (+ ์šฐ๋ฆฌ ํŒ€์›๋“ค) -->
    	<memberInfo mid="1">
    		<name>๋ฐ•๋‚˜์˜</name>
    		<telephone><![CDATA[010-1111-1111]]></telephone>
    		<curriculumn>
    			<sub>JAVA SE</sub>
    			<sub>ORACLE</sub>
    			<sub><![CDATA[Servlet&JSP]]></sub>
    		</curriculumn>
    		<zipCode>03995</zipCode>
    		<addr>์„œ์šธ์‹œ ๋™์ž‘๊ตฌ ์ƒ๋„๋™</addr>
    		<email><![CDATA[na@gmail.com]]></email>
    	</memberInfo>
    	<memberInfo mid="2">
    		<name>์˜ค์ˆ˜๊ฒฝ</name>
    		<telephone><![CDATA[010-2222-2222]]></telephone>
    		<curriculumn>
    			<sub>JAVA SE</sub>
    			<sub>ORACLE</sub>
    			<sub><![CDATA[Servlet&JSP]]></sub>
    		</curriculumn>
    		<zipCode>04031</zipCode>
    		<addr>์„œ์šธ์‹œ ์ค‘๋ž‘๊ตฌ ๋ฉด๋ชฉ๋™</addr>
    		<email><![CDATA[su@gmail.com]]></email>
    	</memberInfo>
    	<memberInfo mid="3">
    		<name>๋ฌธ์ •ํ™˜</name>
    		<telephone><![CDATA[010-3333-3333]]></telephone>
    		<curriculumn>
    			<sub>JAVA SE</sub>
    			<sub>ORACLE</sub>
    			<sub><![CDATA[Servlet&JSP]]></sub>
    		</curriculumn>
    		<zipCode>03992</zipCode>
    		<addr>์ธ์ฒœ ๋‚จ๋™๊ตฌ ๋‚จ์ดŒ๋™</addr>
    	</memberInfo>
    	<memberInfo mid="4">
    		<name>์ด์ฃผํ˜•</name>
    		<telephone><![CDATA[010-4444-4444]]></telephone>
    		<curriculumn>
    			<sub>JAVA SE</sub>
    			<sub>ORACLE</sub>
    			<sub><![CDATA[Servlet&JSP]]></sub>
    		</curriculumn>
    		<zipCode>04001</zipCode>
    		<addr>๊ฒฝ๊ธฐ๋„ ํ™”์„ฑ์‹œ ๋™ํƒ„ ๋ชฉ๋™</addr>
    	</memberInfo>
    	<memberInfo mid="5">
    		<name>์ž„ํ•˜์„ฑ</name>
    		<telephone><![CDATA[010-5555-5555]]></telephone>
    		<curriculumn>
    			<sub>JAVA SE</sub>
    			<sub>ORACLE</sub>
    			<sub><![CDATA[Servlet&JSP]]></sub>
    		</curriculumn>
    		<zipCode>04000</zipCode>
    		<addr>์„œ์šธ์‹œ ๊ฐ•๋ถ๊ตฌ ๋ฏธ์•„๋™</addr>
    	</memberInfo>
    	<memberInfo mid="6">
    		<name>์—„์žฌ์šฉ</name>
    		<telephone><![CDATA[010-6666-6666]]></telephone>
    		<curriculumn>
    			<sub>JAVA SE</sub>
    			<sub>ORACLE</sub>
    			<sub><![CDATA[Servlet&JSP]]></sub>
    		</curriculumn>
    		<zipCode>03991</zipCode>
    		<addr>์„œ์šธ์‹œ ๊ด€์•…๊ตฌ ์‹ ๋ฆผ๋™</addr>
    	</memberInfo>
    </memList>

    ใ„ด/XmlApp04/src/com/test

    ใ„ดใ„ดXmlDomTest01.java

    /* =============================
    	XmlDomTest01.java
    	- ์ฝ˜์„ค ๊ธฐ๋ฐ˜ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ
    	- XML DOM ํ™œ์šฉ → ๋กœ์ปฌ(local) XML ์ฝ์–ด๋‚ด๊ธฐ
    ================================ */
    package com.test;
    
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.NodeList;
    
    public class XmlDomTest01
    {	
    	public static void main(String[] args)
    	{
    		// 1. XML ํŒŒ์ผ์„ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ → XML DOM ํ˜•์„ฑ
    		// 2. ๋ฃจํŠธ ์—˜๋ฆฌ๋จผํŠธ ์ ‘๊ทผ
    		// 3. ํŠน์ • ํ•˜์œ„ ์—˜๋ฆฌ๋จผํŠธ ์ ‘๊ทผ → ์œ„์น˜, ์ด๋ฆ„ ๋“ฑ์„ ๊ธฐ์ค€์œผ๋กœ ์ ‘๊ทผ
    		// 4. ํ…์ŠคํŠธ ๋…ธ๋“œ(์†์„ฑ ๋…ธ๋“œ) ์ ‘๊ทผ → ๋ฐ์ดํ„ฐ ํš๋“
    		// 5. ๊ฒฐ๊ณผ ์ฒ˜๋ฆฌ(์ถœ๋ ฅ)
    		
    		try
    		{
    			// XML ํŒŒ์ผ์„ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ์‹œํ‚ฌ ์ค€๋น„
    			// -> XML DOM ํ˜•์„ฑ์„ ์œ„ํ•œ ์ค€๋น„
    			//	  (์ด๋ฅผ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค ๊ตฌ์„ฑ)
    			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    			DocumentBuilder builder = factory.newDocumentBuilder();
    			Document xmlObj = null;
    			
    			// XML ํŒŒ์ผ์„ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ → XMl DOMํ˜•์„ฑ
    			String url = "VEHICLES.xml";
    			xmlObj = builder.parse(url);
    			
    			
    			
    			// ๋ฃจํŠธ ์—˜๋ฆฌ๋จผํŠธ ์ ‘๊ทผ
    			Element root = xmlObj.getDocumentElement();	//** ๋ฃจํŠธ์—˜๋ฆฌ๋จผํŠธ์— ์ ‘๊ทผ๊ฐ€๋Šฅ
    			
    			// ํ…Œ์ŠคํŠธ
    			//System.out.println(root.getNodeName());
    			//--==>> VEHICLE
    			
    			// ํŠน์ • ํ•˜์œ„ ์—˜๋ฆฌ๋จผํŠธ ์ ‘๊ทผ → ์œ„์น˜, ์ด๋ฆ„ ๋“ฑ์„ ๊ธฐ์ค€์œผ๋กœ ์ ‘๊ทผ
    			// ใ€Žget(ElementsByTagName()ใ€ ๋ฉ”์†Œ๋“œ๋Š” ํƒœ๊ทธ์˜ ์ด๋ฆ„์„ ๊ฐ€์ง€๊ณ 
    			// ํ•˜์œ„(์ž์‹,์ž์†) ๋…ธ๋“œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด ์ฃผ๋Š” ๋ฉ”์†Œ๋“œ
    			NodeList vehicleNodeList = root.getElementsByTagName("VEHICLE");			
    			
    		}catch (Exception e)
    		{
    			System.out.println(e.toString());
    		}
    	}
    }

    ใ„ดใ„ดXmlDomTest02.xml

    /* ========================================
    	XmlDomTest01.java
    	- ์ฝ˜์„ค ๊ธฐ๋ฐ˜ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ
    	- XML DOM ํ™œ์šฉ → ๋กœ์ปฌ(local) XML ์ฝ์–ด๋‚ด๊ธฐ
    	  (memberList.xml)
    =========================================== */
    
    // ๋…ธ์€ํ•˜ 010-1234-4567
    // ๊น€๋ฏผ์ง€ 0100-9987-8876
    
    package com.test;
    
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    
    public class XmlDomTest02
    {
    	public static void main(String[] args)
    	{
    		try
    		{
    			// 1. XML ํŒŒ์ผ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ -> DOM ํ˜•์„ฑ
    			// 2. ๋ฃจํŠธ์—˜๋ฆฌ๋จผํŠธ ์ ‘๊ทผ
    			// 3. ํŠน์ • ํ•˜์œ„ ์—˜๋ฆฌ๋จผํŠธ ์ ‘๊ทผ
    			// 4. ํ…์ŠคํŠธ๋…ธ๋“œ(์†์„ฑ๋…ธ๋“œ) ์ ‘๊ทผ
    			// 5. ๊ฒฐ๊ณผ ์ฒ˜๋ฆฌ(์ถœ๋ ฅ)
    			
    			
    			// 1. XML ํŒŒ์ผ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ -> DOM ํ˜•์„ฑ
    			DocumentBuilderFactory factroy = DocumentBuilderFactory.newInstance();
    			DocumentBuilder builder = factroy.newDocumentBuilder();
    			Document xmlObj = null;
    			
    			String url = "memberList.xml";
    			xmlObj = builder.parse(url);
    
    			
    			
    			// 2. ๋ฃจํŠธ์—˜๋ฆฌ๋จผํŠธ ์ ‘๊ทผ
    			Element root = xmlObj.getDocumentElement();
    			//					  get + DocumentElemt
    			//-- ๋ฌธ์„œ์˜ ๋Œ€ํ‘œ ์—˜๋ฆฌ๋จผํŠธ(๋ฃจํŠธ ์—˜๋ฆฌ๋จผํŠธ)๋ฅผ ์–ป์–ด๋‚ด๋Š” ๊ณผ์ •
    			//System.out.println(root.getNodeName());
    			
    			
    			
    			// 3. ํŠน์ • ํ•˜์œ„ ์—˜๋ฆฌ๋จผํŠธ ์ ‘๊ทผ -> ์œ„์น˜, ์ด๋ฆ„ ๋“ฑ์„ ๊ธฐ์ค€์œผ๋กœ ์ ‘๊ทผ(์‚ฌ์‹ค์ƒ ๋ฌธ๋ฒ•์ ์œผ๋กœ ๋‹ค์–‘ํ•œ ์ ‘๊ทผ ๋ฐฉ๋ฒ• ์ง€์›)
    			NodeList memberNodeList = root.getElementsByTagName("memberInfo");
    			//-- ์ด ๋•Œ, ใ€ŽgetElementsByTagName()ใ€๋ฉ”์†Œ๋“œ๋Š”
    			//	ํƒœ๊ทธ์˜ ์ด๋ฆ„์„ ๊ฐ€์ง€๊ณ  ์ž์‹์ด๋‚˜ ์ž์† ๋…ธ๋“œ์— ์ ‘๊ทผ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฉ”์†Œ๋“œ
    			//						 ------------------ (ํŠน์ • ๋…ธ๋“œ)
    			
    			// โ€ป check~!!!
    			//	  XML ์—์„œ ์–ป์–ด๋‚ธ NodeList ๊ฐ์ฒด์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” Node์˜ ๊ฐฏ์ˆ˜๋ฅผ
    			//	  ใ€ŽgetLength()ใ€ ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
    			//	  ์ด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ฐ๊ฐ์˜ Node ์— ์ ‘๊ทผํ•˜๋Š” ๋ฐ˜๋ณต์˜ ํšŸ์ˆ˜๋ฅผ ํŠน์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
    			
    			//System.out.println(memberNodeList.getLength());
    			
    			
    			
    			// 4. ํ…์ŠคํŠธ๋…ธ๋“œ(์†์„ฑ๋…ธ๋“œ) ์ ‘๊ทผ
    			// -> ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ ์–ป์–ด๋‚ด๊ธฐ
    			for (int i = 0; i < memberNodeList.getLength(); i++) 
    			{ 
    				Node memberNode = memberNodeList.item(i);
    				//-- ใ€ŽgetElementsByTagName()ใ€ ๋ฉ”์†Œ๋“œ๊ฐ€ ์ด๋ฆ„์„ ํ†ตํ•ด ๋Œ€์ƒ์„ ํš๋“ํ–ˆ๋‹ค๋ฉด...
    				//	 ใ€Žitem()ใ€ ๋ฉ”์†Œ๋“œ๋Š” ์œ„์น˜(์ธ๋ฑ์Šค)๋ฅผ ํ†ตํ•ด ๋Œ€์ƒ์„ ํš๋“ํ•˜๊ฒŒ ๋œ๋‹ค...
    				
    				// ์บ์ŠคํŒ… (๋…ธ๋“œ๋ฅผ ์—˜๋ฆฌ๋จผํŠธ๋กœ...)
    				Element memberElemet = (Element)memberNode;
    				//-- ์ด์™€ ๊ฐ™์€ ์ฝ”๋“œ ๊ตฌ์„ฑ์ด ๊ฐ€๋Šฅํ•œ ์ด์œ ๋Š”
    				//	 ์—˜๋ฆฌ๋จผํŠธ๊ฐ€ ๋…ธ๋“œ์˜ ํ•˜์œ„ ๊ฐœ๋…์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•œ ๊ตฌ๋ฌธ.
    	
    				
    				
    				// 5. ๊ฒฐ๊ณผ ์ฒ˜๋ฆฌ(์ถœ๋ ฅ)
    				System.out.printf("%s %s%n" 
    						, getText(memberElemet, "name")
    						, getText(memberElemet, "telephone"));
    				//--==>>
    	//			๋…ธ์€ํ•˜ 010-1234-4567
    	//			๊น€๋ฏผ์ง€ 010-9987-8876
    				
    				
    				
    				// ๋Œ€์ƒ ๋ฌธ์„œ(memberList.xml)์˜
    				// ์ปค๋ฆฌํ˜๋Ÿผ(curriculum)์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ ์ถ”๊ฐ€ ------------------------------
    				
    				// memberList.xml ์˜
    				// memberInfoElement ๋กœ ๋ถ€ํ„ฐ curriculumn NodeList ์–ป์–ด์˜ค๊ธฐ
    				NodeList curriculumnNodeList = memberElemet.getElementsByTagName("curriculumn");
    				
    				// check~!!!
    				if (curriculumnNodeList.getLength() > 0)
    				{
    					Node curriculumnNode = curriculumnNodeList.item(0);
    					Element curricumnElement = (Element)curriculumnNode;
    					
    					// ๋ฐฉ๋ฒ• 1.
    					/*
    					NodeList subNodeList = curricumnElement.getElementsByTagName("sub");
    					for (int j = 0; j < subNodeList.getLength(); j++)
    					{
    						Node subNode = subNodeList.item(j);
    						Element subElement = (Element) subNode;
    						System.out.printf("%s ", subElement.getTextContent());
    					}
    					System.out.println();
    					*/
    					
    					
    					// ๋ฐฉ๋ฒ• 2.
    					/*
    					--------------------------------------------------
    					Node Type			Node Constant
    					--------------------------------------------------
    						1				ELEMENT_NODE
    						2				ATTRIBUTE_NODE
    						3				TEXT_NODE
    						4				CDATA_SECTION_NODE
    						5				ENTITY_REFERENCE_NODE
    						6				ENTITI_NODE
    						7				PROCESSING_INSTRUCTION_NODE
    						8				COMMENT_NODE
    						9				DOCUMENT_NODE
    					   10				DOCUMENT_TYPE_NODE
    					   11				DOCUMENT_FRAGMENT_NODE
    					   12				NOTATION_NODE
    					--------------------------------------------------
    					*/
    					
    					NodeList subNodeList = curricumnElement.getChildNodes(); // check~!!!
    					for (int j = 0; j < subNodeList.getLength(); j++)
    					{
    						Node subNode = subNodeList.item(j);
    						if(subNode.getNodeType() == 1)	//-- ElELEMENT_NODE	 // check~!!!
    						{
    							Element subElement = (Element) subNode;
    							System.out.printf("%s", subElement.getTextContent());
    						}
    						System.out.println();
    					}
    				}
    				// ------------------------------ ์ปค๋ฆฌํ˜๋Ÿผ(curriculum)์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ ์ถ”๊ฐ€ 
    			}
    			
    		} catch (Exception e)
    		{
    			System.out.println(e.toString());
    		}
    	}
    	
    	// ํŠน์ • ์—˜๋ฆฌ๋จผํŠธ ์–ป์–ด์˜ค๋Š” ๋ฉ”์†Œ๋“œ ์ •์˜
    	public static String getText(Element parent, String tagName)
    	{
    		String result = "";
    		
    		// 4-1. ํŠน์ • ํƒœ๊ทธ์ด๋ฆ„ ๊ฐ€์ง„ ๊ฐ์ฒด์˜ ์ฒซ๋ฒˆ์งธ ์ž์‹ ๋…ธ๋“œ ๊ฐ€์ ธ์˜ค๊ธฐ
    		Node node = parent.getElementsByTagName(tagName).item(0); 
    		//** item(0): 0์ธ ์ด์œ ๋Š” ํ•ด๋‹น ์ด๋ฆ„์˜ ์—˜๋ฆฌ๋จผํŠธ๋“ค์„ ๊ฐ€์ ธ์˜ค๋Š”๋ฐ, ๊ทธ์ค‘ ์ฒซ๋ฒˆ์งธ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด์„œ...
    		
    		Element element = (Element)node;
    		
    		// 4-2. ํŠน์ • ์—˜๋ฆฌ๋จผํŠธ์˜ ๊ฐ’ ๊ฐ€์ ธ์˜ค๊ธฐ
    		result = element.getChildNodes().item(0).getNodeValue();
    		
    		return result;
    	}
    }

    ใ„ดใ„ดXmlDomTest03.xml

    /*================================================
    	XmlDomTest03.java
    	- ์ฝ˜์†” ๊ธฐ๋ฐ˜ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ
    	- XML DOM ํ™œ์šฉ → ๋กœ์ปฌ(local) XML ์ฝ์–ด๋‚ด๊ธฐ
    	  (memList.xml)
    ================================================*/
    package com.test;
    
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    
    public class XmlDomTest03
    {
    	public static void main(String[] args)
    	{
    		// 1. XML ํŒŒ์ผ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ
    		// 2. ๋ฃจํŠธ ์—˜๋ฆฌ๋จผํŠธ์— ์ ‘๊ทผ
    		// 3. ํŠน์ • ํ•˜์œ„ ์—˜๋ฆฌ๋จผํŠธ์— ์ ‘๊ทผ
    		// 4. ํ…์ŠคํŠธ๋…ธ๋“œ(์†์„ฑ ๋…ธ๋“œ)์— ์ ‘๊ทผ
    		// 5. ๊ฒฐ๊ณผ ์ฒ˜๋ฆฌ(์ถœ๋ ฅ)
    		
    		try
    		{
    			// 1. XML ํŒŒ์ผ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ
    			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    			DocumentBuilder builder = factory.newDocumentBuilder();
    			Document xmlObj = null;
    			
    			String url = "memList.xml";
    			xmlObj = builder.parse(url);
    			
    			// 2. ๋ฃจํŠธ ์—˜๋ฆฌ๋จผํŠธ์— ์ ‘๊ทผ
    			Element root = xmlObj.getDocumentElement();
    			
    			// 3. ํŠน์ • ํ•˜์œ„ ์—˜๋ฆฌ๋จผํŠธ์— ์ ‘๊ทผ
    			NodeList memberInfoNodeList = root.getElementsByTagName("memberInfo");
    			
    			for (int i = 0; i < memberInfoNodeList.getLength(); i++)
    			{
    				Node memberInfoNode = memberInfoNodeList.item(i);
    				Element memberInfoElement = (Element)memberInfoNode;
    				
    				NodeList curriculumnNodeList = memberInfoElement.getElementsByTagName("curriculumn");
    				Node curriculumnNode = curriculumnNodeList.item(0);
    				Element curriculumnElement = (Element)curriculumnNode;
    				
    				System.out.printf("%s %s %s %s %s %s%n"
    									, getText(memberInfoElement, "name")
    									, getText(memberInfoElement, "telephone")
    									, getText(curriculumnElement, "sub")
    									, getText(memberInfoElement, "zipCode")
    									, getText(memberInfoElement, "addr")
    									, getText(memberInfoElement, "email"));
    				
    			}
    			
    		} catch (Exception e)
    		{
    			System.out.println(e.toString());
    		}
    	}// end main
    	
    	private static String getText(Element parent, String tagName)
    	{
    		String result="";
    		
    		// ํŠน์ • ํƒœ๊ทธ ์ด๋ฆ„์„ ๊ฐ€์ง„ ๊ฐ์ฒด์˜ ์ฒซ ๋ฒˆ์งธ ์ž์‹ ๋…ธ๋“œ๋ฅผ ์–ป์–ด์˜จ ๋‹ค์Œ
    		NodeList tagNameNodeList = parent.getElementsByTagName(tagName);
    		int maxIdx = tagNameNodeList.getLength();
    		/* System.out.println(tagName + maxIdx); */
    		
    		for (int m = 0; m < maxIdx; m++)
    		{
    			
    			Node node = parent.getElementsByTagName(tagName).item(m);
    			Element element = (Element)node;
    			
    			// ํŠน์ • ์—˜๋ฆฌ๋จผํŠธ์˜ ์ž์‹ ๋…ธ๋“œ(Text Node)์˜ ๊ฐ’(nodeValue)๋ฅผ ์–ป์–ด์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ์ฒ˜๋ฆฌ
    			result += element.getChildNodes().item(0).getNodeValue(); 
    
    		}
    		
    		// ๊ฒฐ๊ณผ๊ฐ’ ๋ฐ˜ํ™˜
    		return result;
    	}
    }

    ใ„ดใ„ดXmlDomTest04.java

    /*================================================
    	XmlDomTest04.java
    	- ์ฝ˜์†” ๊ธฐ๋ฐ˜ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ
    	- XML DOM ํ™œ์šฉ → ๋กœ์ปฌ(local) XML ์ฝ์–ด๋‚ด๊ธฐ
    	  (memList.xml)
    ================================================*/
    
    // breakfast_menu.xml ํŒŒ์ผ์„ ๋Œ€์ƒ์œผ๋กœ
    /*
    โ– [Belgian Waffles] $5.95	650 ์นผ๋กœ๋ฆฌ
    - Two of our famous Belgian Waffles with plenty of real maple syrup
    -------------------------------------------------------------------
    โ– [Strawberry Belgian Waffles] $7.95	900 ์นผ๋กœ๋ฆฌ
    - Light Belgian waffles covered with strawberries and whipped cream
    -------------------------------------------------------------------
    โ– [Berry-Berry Belgian Waffles] $8.95	900 ์นผ๋กœ๋ฆฌ
    - Light Belgian waffles covered with an assortment of fresh berries and whipped cream
    -------------------------------------------------------------------
    							:
    */
    // ์ด์™€ ๊ฐ™์ด ์ถœ๋ ฅ์ด ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ๋„๋ก ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•œ๋‹ค.
    
    package com.test;
    
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.ParserConfigurationException;
    
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    
    public class XmlDomTest04
    {
    	public static void main(String[] args)
    	{
    		try
    		{
    			// 1. XML ํŒŒ์ผ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ -> DOM ํ˜•์„ฑ
    			// 2. ๋ฃจํŠธ์—˜๋ฆฌ๋จผํŠธ ์ ‘๊ทผ
    			// 3. ํŠน์ • ํ•˜์œ„ ์—˜๋ฆฌ๋จผํŠธ ์ ‘๊ทผ
    			// 4. ํ…์ŠคํŠธ๋…ธ๋“œ(์†์„ฑ๋…ธ๋“œ) ์ ‘๊ทผ
    			// 5. ๊ฒฐ๊ณผ ์ฒ˜๋ฆฌ(์ถœ๋ ฅ)
    			
    			// 1. XML ํŒŒ์ผ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ
    			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    			DocumentBuilder builder = factory.newDocumentBuilder();
    			Document xmlObj = null;
    			
    			String url = "breakfast_menu.xml";
    			xmlObj = builder.parse(url);
    			
    			
    			// 2. ๋ฃจํŠธ ์—˜๋ฆฌ๋จผํŠธ์— ์ ‘๊ทผ
    			Element root = xmlObj.getDocumentElement();
    			//System.out.println(root.getNodeName());
    			
    			
    			// 3. ํŠน์ • ํ•˜์œ„ ์—˜๋ฆฌ๋จผํŠธ์— ์ ‘๊ทผ
    			NodeList breakfastList = root.getElementsByTagName("food");
    			//System.out.println(breakfastList.getLength());
    			
    			
    			// 4. ํ…์ŠคํŠธ๋…ธ๋“œ(์†์„ฑ ๋…ธ๋“œ)์— ์ ‘๊ทผ
    			for (int i = 0; i < breakfastList.getLength(); i++)
    			{
    				Node breakfastNode = breakfastList.item(i);
    				Element breakfastElement = (Element)breakfastNode;
    				
    				// 5. ๊ฒฐ๊ณผ ์ฒ˜๋ฆฌ(์ถœ๋ ฅ)
    				System.out.printf("โ– [%s] %s	%s ์นผ๋กœ๋ฆฌ\n"
    						+ "- %s\n"
    						+ "-------------------------------------------------------------------\n"
    						, getText(breakfastElement, "name")
    						, getText(breakfastElement, "price")
    						, getText(breakfastElement, "calories")
    						, getText(breakfastElement, "description")
    						);
    			}
    		} catch (Exception e)
    		{
    			System.out.println(e.toString());
    		}
    	}
    	
    	public static String getText(Element parent, String tagName)
    	{
    		String result = "";
    		
    		Node node = parent.getElementsByTagName(tagName).item(0);
    		Element element = (Element)node;
    		
    		result = element.getChildNodes().item(0).getNodeValue();
    		
    		return result;
    	}
    }

    ใ„ดใ„ดXmlDomTest05.java

    /*================================================
    	XmlDomTest05.java
    	- ์ฝ˜์†” ๊ธฐ๋ฐ˜ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ
    	- XML DOM ํ™œ์šฉ → ๋กœ์ปฌ(local) XML ์ฝ์–ด๋‚ด๊ธฐ
    	  (VEHICLES.xml)
    ================================================*/
    /*
    -------------------------------------------------------
    NO  MAKE	MODEL		YEAR	STYLE			PRICE
    -------------------------------------------------------
    1	Dodge	Durango		1998	Sport Utility	1800
    Options ----------------------------------------------- โ—€ ์˜ต์…˜ ๊ฐœ์ˆ˜๊ฐ€ ๋‹ค๋ฆ„
    	Poser_Locks : Yes
    	Power_Window : Yes
    	Stereo : Radio/Cassette/CD
    	Air_conditioning : Yes
    	Automatic : Yes
    	Four_Wheel_Drive : Full/Partial
    	Note : Very clean
    -------------------------------------------------------
    					:
    */
    package com.test;
    
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.ParserConfigurationException;
    
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    
    public class XmlDomTest05
    {
    	public static void main(String[] args)
    	{
    		// 1. XML ํŒŒ์ผ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ
    		// 2. ๋ฃจํŠธ์—˜๋ฆฌ๋จผํŠธ ์ ‘๊ทผ
    		// 3. ํŠน์ • ํ•˜์œ„ ์—˜๋ฆฌ๋จผํŠธ ์ ‘๊ทผ
    		// 4. ํ…์ŠคํŠธ๋…ธ๋“œ(์†์„ฑ๋…ธ๋“œ) ์ ‘๊ทผ
    		// 5. ๊ฒฐ๊ณผ ์ฒ˜๋ฆฌ(์ถœ๋ ฅ)
    		
    		try
    		{
    			// 1. XML ํŒŒ์ผ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ
    			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    			DocumentBuilder builder = factory.newDocumentBuilder();
    			Document xmlObj = null;
    			
    			String url = "VEHICLES.xml";
    			xmlObj = builder.parse(url);
    			
    			// 2. ๋ฃจํŠธ์—˜๋ฆฌ๋จผํŠธ ์ ‘๊ทผ
    			Element root = xmlObj.getDocumentElement();
    			//System.out.println(root.getNodeName());
    			
    			// 3. ํŠน์ • ํ•˜์œ„ ์—˜๋ฆฌ๋จผํŠธ ์ ‘๊ทผ
    			NodeList vehicleList = root.getElementsByTagName("VEHICLE");
    			//System.out.println(vehicleList.getLength());
    			
    			// 4. ํ…์ŠคํŠธ๋…ธ๋“œ(์†์„ฑ๋…ธ๋“œ) ์ ‘๊ทผ
    			for (int i = 0; i < vehicleList.getLength(); i++)
    			{
    				Node vehicleNode = vehicleList.item(i);
    				Element vehicleElement = (Element)vehicleNode;
    				
    				// 5. ๊ฒฐ๊ณผ ์ฒ˜๋ฆฌ(์ถœ๋ ฅ)
    				System.out.printf(
    						"----------------------------------------------------------------\n" + 
    						"NO  	MAKE	MODEL	YEAR	STYLE		PRICE\n" + 
    						"----------------------------------------------------------------\n" + 
    						"%2s %10s %10s %5s	%13s	%7s\n"
    						,getText(vehicleElement, "INVENTORY_NUMBER")
    						,getText(vehicleElement, "MAKE")
    						,getText(vehicleElement, "MODEL")
    						,getText(vehicleElement, "YEAR")
    						,getText(vehicleElement, "STYLE")
    						,getText(vehicleElement, "PRICE")
    						
    						);
    				
    				NodeList optionNodeList = vehicleElement.getElementsByTagName("OPTIONS");
    				Node optionNode = optionNodeList.item(0);
    				Element optionElement = (Element)optionNode;
    				System.out.println("Options --------------------------------------------------------");
    				
    				NodeList subNodeList = optionElement.getChildNodes();
    				
    //				if(subNodeList.getLength() >0)
    //				{}
    				for (int j = 0; j < subNodeList.getLength(); j++)
    				{
    					
    					Node node = subNodeList.item(j);
    					//System.out.println("๊ฐฏ์ˆ˜: "+subNodeList.getLength());
    					
    					if (node.getNodeType() == 1) { // ์‹ค์ œ ์ถœ๋ ฅ๋˜๋Š” ๊ตฌ๋ฌธ
    						//System.out.println("ELEMENT_NODE Node Name = " + node.getNodeName());
    						//System.out.println("ELEMENT_NODE Text Content = " + node.getTextContent());
    						
    						System.out.printf("%s : %s\n",node.getNodeName(), node.getTextContent());
    					}
    					if (node.getNodeType() == 3) { // ๊ณต๋ฐฑ..
    						//System.out.println("TEXT_NODE Node Name = " + node.getNodeName());
    						//System.out.println("TEXT_NODE Text Content = " + node.getTextContent());
    					}
    				}
    				
    				System.out.println("----------------------------------------------------------------\n\n\n");
    			}
    			
    			
    		} catch (Exception e)
    		{
    			System.out.println(e.toString());
    		}
    		
    	}
    	
    	public static String getText(Element parent, String tagName)
    	{
    		String result = "";
    		
    		NodeList tagNameNodeList = parent.getElementsByTagName(tagName);
    		int maxIdx = tagNameNodeList.getLength();
    		
    		for (int i = 0; i < maxIdx; i++)
    		{
    			Node node = parent.getElementsByTagName(tagName).item(i);
    			Element element = (Element)node;
    			
    			result = element.getChildNodes().item(0).getNodeValue();
    		}
    		
    		
    		return result;
    	}
    }