๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
XmlStudy/XmlApp

โ— XmlTest 01 ~ 04 [xml ํŒŒ์ผ]

by ๋‹‰๋„ค์ž„์—†๋Š” ๋‹‰๋„ค์ž„ 2024. 1. 31.
TOP

๋ชฉ์ฐจ

    โ– โ– โ–  XML โ– โ– โ– 

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

    ๋”๋ณด๊ธฐ

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

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

    aflvekdc 45 99443304221
    vleokde  49 99530219432 

    <people>
        <person sid="1">
    <name>aflvekdc</name>
    <age>45</age>
    <tel>99443304221</tel>
        </person>
        <person sid="2">
    <name>vleokde</name>
    <age>49</age>
    <tel>99530219432</tel>
        </person>
    </people>

    โ€ป ์ฐธ๊ณ 

     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).txt โ– โ– โ– 

    ๋”๋ณด๊ธฐ

    โ– โ– โ–  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)>
      ]>
      
      // note.xml
      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE note SYSTEM "note.did">
      <note>
          <to>Tove</to>
          <from>Jani</from>
          <heading>Reminder</heading>
          <body>Do not forget me this weekend</body>
      </note>
     
     - XML ๋ฌธ์„œ ๋‚ด๋ถ€์— ์‚ฝ์ž…

     // note.xml
      <?xml version="1.0" encoding="UTF-8"?>
      
      <!DOCTYPE note
      [
      <!ELEMENT note (to,from,heading,body)>
      <!ELEMENT to (#PCDATA)>
      <!ELEMENT from (#PCDATA)>
      <!ELEMENT heading (#PCDATA)>
      <!ELEMENT body (#PCDATA)>
      ]>
      
      <note>
          <to>Tove</to>
          <from>Jani</from>
          <heading>Reminder</heading>
          <body>Do not forget me this weekend</body>
      </note>

    [XmlApp01]

    xmlTest01.xml

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

    memberList.xml

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

    memList.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <memList>
    	<memberInfo mid="2">
    		<name>๋ฐ•๊ฐ€์˜</name>
    		<tel><![CDATA[010-9999-9999]]></tel>
    		<age>28</age>
    		<nationality>KOR</nationality>
    		<addr>๋Œ€ํ•œ๋ฏผ๊ตญ</addr>
    		<ssn><![CDATA[951118-2******]]></ssn>
    	</memberInfo>
    	
    	<memberInfo mid="3">
    		<name>์ •ํ˜„์šฑ</name>
    		<tel><![CDATA[010-9****-****]]></tel>
    		<age>23</age>
    		<nationality>JAPAN</nationality>
    		<addr>๊ฐœํ•ญ์ง€</addr>
    		<ssn>์™ธ๊ตญ์ธ๋“ฑ๋ก๋ฒˆํ˜ธ</ssn>	
    		<hobby>์ž๊ธฐ</hobby>
    	</memberInfo>
    </memList>

    [XmlApp02]

    memberList.xml

    <?xml version="1.0" encoding="UTF-8"?>
    
    <!-- DTD ์ถ”๊ฐ€ -->
    <!DOCTYPE memberList 
    [
    <!ELEMENT memberList (memberInfo+)>
    <!ELEMENT memberInfo (name, telephone, curriculumn?, zipCode, addr)>
    <!ELEMENT name (#PCDATA)>
    <!ELEMENT telephone (#PCDATA)>
    <!ELEMENT curriculumn (sub+)>
    <!ELEMENT sub (#PCDATA)>
    <!ELEMENT zipCode (#PCDATA)>
    <!ELEMENT addr (#PCDATA)>
    <!ATTLIST memberInfo mid CDATA #IMPLIED>   
    ]>
    
    <!-- #REQUIRED : ์ด ์†์„ฑ์€ ๋ฐ˜๋“œ์‹œ ๋ช…์‹œ๋˜์–ด์•ผ ํ•œ๋‹ค. -->
    <!-- #IMPLED : ์ด ์†์„ฑ์€ ๋ช…์‹œ๋˜๊ธฐ๋„ ํ•˜๊ณ , ๋ช…์‹œ๋˜์ง€ ์•Š๊ธฐ๋„ ํ•œ๋‹ค. -->
    <!-- #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>
    		<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, tel?, age, nationality, addr, ssn, hobby)>
    <!ELEMENT name (#PCDATA)>
    <!ELEMENT tel (#PCDATA)>
    <!ELEMENT age (#PCDATA)>
    <!ELEMENT nationality (#PCDATA)>
    <!ELEMENT addr (#PCDATA)>
    <!ELEMENT ssn (#PCDATA)>
    <!ELEMENT hobby (#PCDATA)>
    <!ATTLIST memberInfo mid CDATA #IMPLIED>
    ]>
    
    
    <memList>
    	<!-- memList.xml -->
    	
    	<memberInfo mid="2">
    		<name>๋ฐ•๊ฐ€์˜</name>
    		<tel><![CDATA[010-9999-9999]]></tel>
    		<age>28</age>
    		<nationality>KOR</nationality>
    		<addr>๋Œ€ํ•œ๋ฏผ๊ตญ</addr>
    		<ssn><![CDATA[951118-2******]]></ssn>
    		<hobby>๋จน๊ธฐ</hobby>
    	</memberInfo>
    	
    	<memberInfo mid="3">
    		<name>์ •ํ˜„์šฑ</name>
    		<tel><![CDATA[010-9****-****]]></tel>
    		<age>23</age>
    		<nationality>JAPAN</nationality>
    		<addr>๋„์ฟ„</addr>
    		<ssn>์™ธ๊ตญ์ธ๋“ฑ๋ก๋ฒˆํ˜ธ</ssn>	
    		<hobby>์ž๊ธฐ</hobby>
    	</memberInfo>
    	
    	<memberInfo>
    		<name>๊น€๊ฒฝํƒœ</name>
    		<age>23</age>
    		<nationality>THAI</nationality>
    		<addr>๋ฐฉ์ฝ•</addr>
    		<ssn>์™ธ๊ตญ์ธ๋“ฑ๋ก๋ฒˆํ˜ธ</ssn>	
    		<hobby>๋†€๊ธฐ</hobby>
    	</memberInfo>
    
    	<memberInfo mid="4">
    		<name>๊น€๋ฏผ์ง€</name>
    		<age>24</age>
    		<nationality>USA</nationality>
    		<addr>๋‰ด์š•</addr>
    		<ssn>์™ธ๊ตญ์ธ๋“ฑ๋ก๋ฒˆํ˜ธ</ssn>	
    		<hobby>์”ป๊ธฐ</hobby>
    	</memberInfo>
    
    
    	<memberInfo>
    		<name>๋…ธ์€ํ•˜</name>
    		<age>23</age>
    		<nationality>CHINA</nationality>
    		<addr>์—ฐ๋ณ€</addr>
    		<ssn>์™ธ๊ตญ์ธ๋“ฑ๋ก๋ฒˆํ˜ธ</ssn>	
    		<hobby>๋›ฐ๊ธฐ</hobby>
    	</memberInfo>
    	
    </memList>

    [XmlApp03]

    โ—‹ ์‹ค์Šต  xmlํŒŒ์ผ

    ๋”๋ณด๊ธฐ

    - 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)
    	{
    		var xmlObj, cityList, result, idx;
    		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>
    	<hr>
    </div>
    
    <div>
    	<button type="button" onclick="loadDoc()">XML ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ~!!!</button>
    	<p id="text"></p>
    </div>
    
    </body>
    </html>

    [XmlApp04]

    โ—‹ ์‹ค์Šต xml ํŒŒ์ผ

    - 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>

    - memberList.xml

    ๋”๋ณด๊ธฐ
    <?xml version="1.0" encoding="UTF-8"?>
    
    <!-- DTD ์ถ”๊ฐ€ -->
    <!DOCTYPE memberList 
    [
    <!ELEMENT memberList (memberInfo+)>
    <!ELEMENT memberInfo (name, telephone, curriculumn?, zipCode, addr)>
    <!ELEMENT name (#PCDATA)>
    <!ELEMENT telephone (#PCDATA)>
    <!ELEMENT curriculumn (sub+)>
    <!ELEMENT sub (#PCDATA)>
    <!ELEMENT zipCode (#PCDATA)>
    <!ELEMENT addr (#PCDATA)>
    <!ATTLIST memberInfo mid CDATA #IMPLIED>   
    ]>
    
    <!-- #REQUIRED : ์ด ์†์„ฑ์€ ๋ฐ˜๋“œ์‹œ ๋ช…์‹œ๋˜์–ด์•ผ ํ•œ๋‹ค. -->
    <!-- #IMPLED : ์ด ์†์„ฑ์€ ๋ช…์‹œ๋˜๊ธฐ๋„ ํ•˜๊ณ , ๋ช…์‹œ๋˜์ง€ ์•Š๊ธฐ๋„ ํ•œ๋‹ค. -->
    <!-- #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>
    		<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, tel, age, nationality, addr, ssn, hobby?, food?)>
    <!ELEMENT name (#PCDATA)>
    <!ELEMENT tel (#PCDATA)>
    <!ELEMENT age (#PCDATA)>
    <!ELEMENT nationality (#PCDATA)>
    <!ELEMENT addr (#PCDATA)>
    <!ELEMENT ssn (#PCDATA)>
    <!ELEMENT hobby (#PCDATA)>
    <!ELEMENT food (foodName+)>
    <!ELEMENT foodName (#PCDATA)>
    <!ATTLIST memberInfo mid CDATA #REQUIRED>
    ]>
    
    
    <memList>
    	<!-- memList.xml -->
    	
    	<memberInfo mid="1">
    		<name>๋ฐ•๊ฐ€์˜</name>
    		<tel><![CDATA[010-9999-9999]]></tel>
    		<age>28</age>
    		<nationality>KOR</nationality>
    		<addr>๋Œ€ํ•œ๋ฏผ๊ตญ</addr>
    		<ssn><![CDATA[951118-2******]]></ssn>
    		<hobby>๋จน๊ธฐ</hobby>
    		<food>
    			<foodName>ํ–„๋ฒ„๊ฑฐ</foodName>
    			<foodName>์น˜ํ‚จ</foodName>
    			<foodName>ํ”ผ์ž</foodName>
    		</food>
    	</memberInfo>
    	
    	<memberInfo mid="2">
    		<name>์ •ํ˜„์šฑ</name>
    		<tel><![CDATA[010-9****-****]]></tel>
    		<age>23</age>
    		<nationality>JAPAN</nationality>
    		<addr>๋„์ฟ„</addr>
    		<ssn>์™ธ๊ตญ์ธ๋“ฑ๋ก๋ฒˆํ˜ธ</ssn>	
    		<hobby>์ž๊ธฐ</hobby>
    		<food>
    			<foodName>์ดˆ๋ฐฅ</foodName>
    			<foodName>๋ผ๋ฉ˜</foodName>
    			<foodName>๋ˆ๊นŒ์Šค</foodName>
    		</food>
    	</memberInfo>
    
    	<memberInfo mid="3">
    		<name>๊น€๋ฏผ์ง€</name>
    		<tel><![CDATA[010-3****-****]]></tel>
    		<age>24</age>
    		<nationality>USA</nationality>
    		<addr>๋‰ด์š•</addr>
    		<ssn>์™ธ๊ตญ์ธ๋“ฑ๋ก๋ฒˆํ˜ธ</ssn>	
    		<food>
    			<foodName>ํƒ•์ˆ˜์œก</foodName>
    			<foodName>์งœ์žฅ๋ฉด</foodName>
    			<foodName>์งฌ๋ฝ•</foodName>
    		</food>
    	</memberInfo>
    
    	
    	<memberInfo mid="4">
    		<name>๊น€๊ฒฝํƒœ</name>
    		<tel><![CDATA[010-4****-****]]></tel>
    		<age>23</age>
    		<nationality>THAI</nationality>
    		<addr>๋ฐฉ์ฝ•</addr>
    		<ssn>์™ธ๊ตญ์ธ๋“ฑ๋ก๋ฒˆํ˜ธ</ssn>	
    		<hobby>๋†€๊ธฐ</hobby>
    	</memberInfo>
    
    
    	<memberInfo mid="5">
    		<name>๋…ธ์€ํ•˜</name>
    		<tel><![CDATA[010-5****-****]]></tel>
    		<age>23</age>
    		<nationality>CHINA</nationality>
    		<addr>์—ฐ๋ณ€</addr>
    		<ssn>์™ธ๊ตญ์ธ๋“ฑ๋ก๋ฒˆํ˜ธ</ssn>	
    		<hobby>๋›ฐ๊ธฐ</hobby>
    	</memberInfo>
    	
    </memList>

    - VEHICLE.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>

    xmlTest01.xml

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

    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.Node;
    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());
    			//--==>> VEHICLES
    			
    			// ํŠน์ • ํ•˜์œ„ ์—˜๋ฆฌ๋จผํŠธ ์ ‘๊ทผ → ์œ„์น˜, ์ด๋ฆ„ ๋“ฑ์„ ๊ธฐ์ค€์œผ๋กœ ์ ‘๊ทผ
    			// ใ€ŽgetElementsByTagName()ใ€  ๋ฉ”์†Œ๋“œ๋Š” ํƒœ๊ทธ์˜ ์ด๋ฆ„์„ ๊ฐ€์ง€๊ณ 
    			// ํ•˜์œ„ ์ž์‹ (์ž์†) ๋…ธ๋“œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด ์ฃผ๋Š” ๋ฉ”์†Œ๋“œ
    			NodeList vehicleNodeList = root.getElementsByTagName("VEHICLE");  		// 's' ํ™•์ธ~
    			
    			// โ€ป NodeList ๊ฐ์ฒด์— ๋“ค์–ด์žˆ๋Š” Node์˜ ๊ฐฏ์ˆ˜๋ฅผ
    			//	  ใ€ŽgetLength()ใ€๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
    			
    			// ํ…Œ์ŠคํŠธ
    			//System.out.println(vehicleNodeList.getLength());
    			//--==>> 10
    			
    			for (int i=0; i<vehicleNodeList.getLength(); i++)	// 10 ๋ฒˆ ๋ฐ˜๋ณต (i : 0 ~ 9 )
    			{
    				// ใ€Žitem()ใ€ ๋ฉ”์†Œ๋“œ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ์— ํ•ด๋‹นํ•˜๋Š” ์ธ๋ฑ์Šค์— ์œ„์น˜ํ•œ
    				// ๋…ธ๋“œ์— ์ ‘๊ทผํ•˜๋„๋ก ์ง€์›ํ•˜๋Š” ๋ฉ”์†Œ๋“œ
    				Node vehicleNode = vehicleNodeList.item(i);		// i → 0 ~ 9
    				
    				// ์บ์ŠคํŠธ ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ
    				// Node ๊ฐ์ฒด๋ฅผ Element  ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
    				// Node ๋Š” ์ƒ์œ„ ๊ฐ์ฒด(์ž๋ฃŒํ˜•)
    				// , Element ๋Š” ํ•˜์œ„ ๊ฐ์ฒด(์ž๋ฃŒํ˜•)๋กœ ๋‹ค๋ฃจ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
    				Element vehicleElement = (Element)vehicleNode;
    				
    				/*
    				NodeList makeNodeList = vehicleElement.getElementsByTagName("MAKE");
    				Node makeNode = makeNodeList.item(0);
    				Element makeElement = (Element)makeNode;
    				System.out.printf("%s : %s%n"
    							, makeElement.getNodeName()
    							, makeElement.getTextContent());
    				
    				NodeList modelNodeList = vehicleElement.getElementsByTagName("MODEL");
    				Node modelNode = modelNodeList.item(0);
    				Element modelElement = (Element)modelNode;
    				System.out.printf("%s : %s%n"
    									, modelElement.getNodeName(), modelElement.getTextContent());
    				*/
    				
    				// ํŠน์ • ์—˜๋ฆฌ๋จผํŠธ์˜ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์–ป๋Š”
    				// ์‚ฌ์šฉ์ž ์ •์˜ ๋ฉ”์†Œ๋“œ ใ€ŽgetTextใ€ ํ˜ธ์ถœ
    				System.out.printf("%s %s %s %s %s%n"
    								, getText(vehicleElement, "MAKE")
    								, getText(vehicleElement, "MODEL")
    								, getText(vehicleElement, "YEAR")
    								, getText(vehicleElement, "PICTURE")
    								, getText(vehicleElement, "STYLE"));
    			}
    			
    			
    		} catch (Exception e)
    		{
    			System.out.println(e.toString());
    		}
    		
    	}// end main
    	
    	// ํŠน์ • ์—˜๋ฆฌ๋จผํŠธ์˜ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์–ป์–ด๋‚ด๋Š” ๋ฉ”์†Œ๋“œ ์ •์˜
    	private static String getText(Element parent, String tagName)
    	{
    		// ๋ฐ˜ํ™˜ํ•  ๊ฒฐ๊ณผ๊ฐ’
    		String result = "";
    		
    		// ํŠน์ • ํƒœ๊ทธ์˜ ์ด๋ฆ„์„ ๊ฐ€์ง„ ๊ฐ์ฒด์˜ ์ฒซ ๋ฒˆ์งธ ์ž์‹ ๋…ธ๋“œ๋ฅผ ์–ป์–ด์˜จ ๋‹ค์Œ
    		Node node = parent.getElementsByTagName(tagName).item(0);
    		Element element = (Element)node;
    		
    		// ํŠน์ • ์—˜๋ฆฌ๋จผํŠธ์˜ ์ž์‹ ๋…ธํŠธ(Text Node)์˜ ๊ฐ’(nodevalue) ๋ฅผ ์–ป์–ด์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ์ฒ˜๋ฆฌ
    		result = element.getChildNodes().item(0).getNodeValue();
    		
    		// ์ตœ์ข… ๊ฒฐ๊ณผ๊ฐ’ ๋ฐ˜ํ™˜
    		return result;
    		
    	}
    }
    //--==>> ์‹คํ–‰ ๊ฒฐ๊ณผ
    /*
    Dodge Durango 1998 DodgeDurango.jpg Sport Utility
    Honda Civic 1997 HondaCivic.jpg Sedan
    Dodge Neon 1996 DodgeNeon.jpg Sedan
    Ferrari F355 1995 FerrariF355.jpg Sport
    BMW 3 Series 1998 BMWSeries3.jpg Sedan
    BMW Z3 1998 BMWZ3.jpg Convertible
    Dodge RAM 1997 DodgeRAM1500.jpg Truck
    Honda Accord 1995 HondaAccord.jpg Sedan
    Dodge RAM 2500 1996 DodgeRAM2500.jpg Truck
    Ford Explorer 1996 FordExplorer.jpg Sport Utility
    */

    XmlDomTest02.java

    /*=============================================
     	XmlDomTest02.java
    	- ์ฝ˜์†”๊ธฐ๋ฐ˜ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ
    	- XML DOM ํ™œ์šฉ → ๋กœ์ปฌ(local) XML ์ฝ์–ด๋‚ด๊ธฐ
    	  (memberList.xml)
    ============================================== */
    
    /*
    ๋…ธ์€ํ•˜ 010-1234-4567
    ๊น€๋ฏผ์ง€ 010-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)
    	{
    		// 1. XML ํŒŒ์ผ์„ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ 
    		//		→ XML DOM ํ˜•์„ฑ
    		// 2. ๋ฃจํŠธ ์—˜๋ฆฌ๋จผํŠธ ์ ‘๊ทผ
    		// 3. ํŠน์ • ํ•˜์œ„ ์—˜๋ฆฌ๋จผํŠธ ์ ‘๊ทผ 
    		//		→ ์œ„์น˜, ์ด๋ฆ„ ๋“ฑ์„ ๊ธฐ์ค€์œผ๋กœ ์ ‘๊ทผ
    		// 4. ํ…์ŠคํŠธ ๋…ธ๋“œ(์†์„ฑ ๋…ธ๋“œ) ์ ‘๊ทผ 
    		//		→ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ ์–ป์–ด๋‚ด๊ธฐ
    		// 5. ๊ฒฐ๊ณผ ์ฒ˜๋ฆฌ
    		//		→ ํŠน์ • ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ
    		
    		try
    		{
    			// XML ํŒŒ์ผ(memberList.xml)์„ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•œ ์ค€๋น„
    			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    			DocumentBuilder builder = factory.newDocumentBuilder();
    			
    			Document xmlObj = null;
    			
    			String url = "memberList.xml";
    			xmlObj = builder.parse(url);
    			
    			// ๋ฃจํŠธ ์—˜๋ฆฌ๋จผํŠธ ์ ‘๊ทผ
    			Element root = xmlObj.getDocumentElement();
    			//					  get + documentElement
    			//-- ๋ฌธ์„œ์˜ ๋Œ€ํ‘œ ์—˜๋ฆฌ๋จผํŠธ(๋ฃจํŠธ ์—˜๋ฆฌ๋จผํŠธ)๋ฅผ ์–ป์–ด๋‚ด๋Š” ๊ณผ์ •
    			
    			// ์–ป์–ด๋‚ธ ๋ฃจํŠธ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํŠน์ • ํ•˜์œ„ ์—˜๋ฆฌ๋จผํŠธ์— ์ ‘๊ทผ
    			NodeList memberNodeList = root.getElementsByTagName("memberInfo");
    			//-- ์ด ๋•Œ ใ€ŽgetElementsByTagName()ใ€๋ฉ”์†Œ๋“œ๋Š”
    			//   ํƒœ๊ทธ์˜ ์ด๋ฆ„์„ ๊ฐ€์ง€๊ณ  ์ž์‹์ด๋‚˜ ์ž์† ๋…ธ๋“œ์— ์ ‘๊ทผ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฉ”์†Œ๋“œ
    			//						  -------------------
    			//								(ํŠน์ • ๋…ธ๋“œ)
    			
    			// โ€ป check~!!!
    			//    XML ์—์„œ ๋ชจ๋“  ๋…ธ๋“œ๋Š” ๋ฃจํŠธ ์—˜๋ฆฌ๋จผํŠธ์˜ ํ•˜์œ„์— ์กด์žฌ~!!!
    			
    			// ์ด๋ ‡๊ฒŒ ์–ป์–ด๋‚ธ NodeList ๊ฐ์ฒด์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” Node ์˜ ๊ฐฏ์ˆ˜๋ฅผ
    			// ใ€ŽgetLength()ใ€ ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
    			// ์ด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ฐ๊ฐ์˜ Node ์— ์ ‘๊ทผํ•˜๋Š” ๋ฐ˜๋ณต์˜ ํšŸ์ˆ˜๋ฅผ ํŠน์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
    			
    			// ํ…Œ์ŠคํŠธ
    			//System.out.println(memberNodeList.getLength());
    			//--==>> 2
    			
    			
    			for (int i = 0; i < memberNodeList.getLength(); i++)	// i → 0 ~ 1
    			{
    				Node memberNode = memberNodeList.item(i);
    				//-- ใ€ŽgetElementsByTagName()ใ€ ๋ฉ”์†Œ๋“œ๊ฐ€ ์ด๋ฆ„์„ ํ†ตํ•ด ๋Œ€์ƒ์„ ํš๋“ํ–ˆ๋‹ค๋ฉด...
    				//   ใ€Žitem()ใ€ ๋ฉ”์†Œ๋“œ๋Š” ์œ„์น˜(์ธ๋ฑ์Šค)๋ฅผ ํ†ตํ•ด ๋Œ€์ƒ์„ ํš๋“ํ•˜๊ฒŒ ๋œ๋‹ค.
    				
    				// ์บ์ŠคํŒ… (๋…ธ๋“œ๋ฅผ ์—˜๋ฆฌ๋จผํŠธ๋กœ...)
    				Element memberElement = (Element)memberNode;
    				//-- ์ด์™€ ๊ฐ™์€ ์ฝ”๋“œ ๊ตฌ์„ฑ์ด ๊ฐ€๋Šฅํ•œ ์ด์œ ๋Š”
    				//   ์—˜๋ฆฌ๋จผํŠธ๊ฐ€ ๋…ธ๋“œ์˜ ํ•˜์œ„ ๊ฐœ๋…์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•œ ๊ตฌ๋ฌธ.
    				
    				// ๊ฒฐ๊ณผ ์ถœ๋ ฅ
    				System.out.printf("%s %s%n", getText(memberElement, "name")
    										   ,getText(memberElement, "telephone"));
    				//--==>>
    				/*
    				๋…ธ์€ํ•˜ 010-1234-4567
    				๊น€๋ฏผ์ง€ 010-9987-8876 
    				*/
    				
    				// ๋Œ€์ƒ ๋ฌธ์„œ(memberList.xml)์˜
    				// ์ปค๋ฆฌํ˜๋Ÿผ(curriculumn)์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ ์ถ”๊ฐ€ --------------------------
    				
    				// memberList.xml ์˜
    				// memberInfoElement ๋กœ ๋ถ€ํ„ฐ curriculumn NodeList ์–ป์–ด์˜ค๊ธฐ
    				NodeList curriculumnNodeList= memberElement.getElementsByTagName("curriculumn");
    				
    				// check~!!!
    				if (curriculumnNodeList.getLength() > 0)
    				{
    					Node curriculumnNode = curriculumnNodeList.item(0);
    					Element curriculumnElement = (Element)curriculumnNode;
    					
    					// ๋ฐฉ๋ฒ• 1.
    					/*
    					NodeList subNodeList = curriculumnElement.getElementsByTagName("sub");
    					for (int m = 0; m < subNodeList.getLength(); m++)
    					{
    						Node subNode = subNodeList.item(m);
    						Element subElement = (Element)subNode;
    						System.out.printf("%s ", subElement.getTextContent());
    						
    					}
    					System.out.println();
    					*/
    					
    					// ๋ฐฉ๋ฒ• 2.
    					/*
    					 ------------------  ------------------------------- 
    					 Node Type				Name Constant
    					 ------------------  -------------------------------
    					    1					ELEMENT_NODE
    					    2					ATTRIBUTE_NODE
    					    3					TEXT_NODE
    					    4					CDATA_SECTION_NODE
    					    5					ENTITY_REFERENCE_NODE
    					    6					ENTITY_NODE
    					    7					PROCESSING_INSTRUCTION_NODE
    					    8					COMMENT_NODE
    					    9					DOCUMNET_NODE
    					   10					DOCUMENT_TYPE_NODE
    					   11					DOCUMNET_FRAGMENT_NODE
    					   12					NOTATION_NODE
    					 ------------------  -------------------------------
    					 */
    					
    					NodeList subNodeList = curriculumnElement.getChildNodes();	// check~!!!
    					for (int m = 0; m < subNodeList.getLength(); m++)
    					{
    						Node subNode = subNodeList.item(m);
    						if (subNode.getNodeType() == 1)		//-- ELEMENT_NODE  // check~!!!
    						{
    							Element subElement = (Element)subNode;
    							System.out.printf("%s ", subElement.getTextContent());
    						}
    						System.out.println();
    					}
    					
    					
    				}
    				// -------------------------- ์ปค๋ฆฌํ˜๋Ÿผ(curriculumn)์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ ์ถ”๊ฐ€ 
    				
    			}
    		}
    		catch(Exception e)
    		{
    			System.out.println(e.toString());
    		}
    		
    	}// end main
    	
    	private static String getText(Element parent, String tagName)
    	{
    		String result = "";
    		
    		// ๋Œ€์ƒ ํƒœ๊ทธ(tagName) ๊ฐ์ฒด์˜ ์ฒซ ๋ฒˆ์งธ ์ž์‹ ๋…ธ๋“œ ์–ป์–ด์˜ค๊ธฐ
    		Node node = parent.getElementsByTagName(tagName).item(0);
    		Element element = (Element)node;
    		
    		// ๋Œ€์ƒ ์—˜๋ฆฌ๋จผํŠธ(element)์˜ ์ž์‹ ๋…ธ๋“œ(ํ…์ŠคํŠธ ๋…ธ๋“œ)์˜ ๊ฐ’ ์–ป์–ด์˜ค๊ธฐ
    		result = element.getChildNodes().item(0).getNodeValue();
    		
    		return result;
    	}
    }
    //--==>> ์‹คํ–‰ ๊ฒฐ๊ณผ
    ๋…ธ์€ํ•˜ 010-1234-4567
    
    JAVA SE 
    
    ORACLE 
    
    Servlet&JSP 
    
    ๊น€๋ฏผ์ง€ 010-9987-8876

    XmlDomTest03.java

    /*=============================================
    		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)
    	{
    		try
    		{
    			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    			DocumentBuilder builder = factory.newDocumentBuilder();
    			Document xmlObj = null;
    			
    			String url = "memList.xml";
    			xmlObj = builder.parse(url);
    			
    			Element root = xmlObj.getDocumentElement();
    			NodeList memNodeList = root.getElementsByTagName("memberInfo");
    			
    			for (int i = 0; i < memNodeList.getLength() ; i++)
    			{
    				Node memNode = memNodeList.item(i);
    				Element memElement = (Element)memNode;
    				
    				System.out.printf("์ด๋ฆ„ : [%s] ์ „ํ™”๋ฒˆํ˜ธ : [%s] ๋‚˜์ด : [%s] ๊ตญ์ : [%s] ์ฃผ์†Œ: [%s] ์ฃผ๋ฏผ๋ฒˆํ˜ธ: [%s] "
    								, getText(memElement, "name"), getText(memElement, "tel")
    								, getText(memElement, "age"), getText(memElement, "nationality")
    								, getText(memElement, "addr"), getText(memElement, "ssn"));
    				
    				// hobby ์ฒ˜๋ฆฌ
    				NodeList hobbyNodeList = memElement.getElementsByTagName("hobby");
    				if (hobbyNodeList.getLength() > 0)
    				{
    					Node hobbyNode = hobbyNodeList.item(0);
    					Element hobbyElement = (Element)hobbyNode;
    					
    						if (hobbyNode.getNodeType() == 1)
    						{
    							hobbyElement = (Element)hobbyNode;
    							System.out.printf("์ทจ๋ฏธ : [%s] ", hobbyElement.getTextContent());
    						}
    					//System.out.println();
    				}
    			
    				
    				// food ์ฒ˜๋ฆฌ
    				NodeList foodNodeList = memElement.getElementsByTagName("food");
    				if (foodNodeList.getLength() > 0)
    				{
    					Node foodNode = foodNodeList.item(0);
    					Element foodElement = (Element)foodNode;
    					
    					NodeList foodNameNodeList = foodElement.getChildNodes();
    					for (int m = 0; m < foodNameNodeList.getLength(); m++)
    					{
    						Node foodNameNode = foodNameNodeList.item(m);
    						if (foodNameNode.getNodeType() == 1)
    						{
    							Element foodNameElement = (Element)foodNameNode;
    							System.out.printf("์Œ์‹ : [%s] ", foodNameElement.getTextContent());
    						}
    					}
    					
    					//System.out.println();
    				}
    				System.out.println();
    				 
    			}
    			
    		} catch (Exception e)
    		{
    			System.out.println(e.toString());
    		}
    	}// end main
    	
    	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;
    		
    	}
    
    }
    
    //--==>> ์‹คํ–‰ ๊ฒฐ๊ณผ
    /*
    ์ด๋ฆ„ : [๋ฐ•๊ฐ€์˜] ์ „ํ™”๋ฒˆํ˜ธ : [010-9999-9999] ๋‚˜์ด : [28] ๊ตญ์ : [KOR] ์ฃผ์†Œ: [๋Œ€ํ•œ๋ฏผ๊ตญ] ์ฃผ๋ฏผ๋ฒˆํ˜ธ: [951118-2******] ์ทจ๋ฏธ : [๋จน๊ธฐ] ์Œ์‹ : [ํ–„๋ฒ„๊ฑฐ] ์Œ์‹ : [์น˜ํ‚จ] ์Œ์‹ : [ํ”ผ์ž] 
    ์ด๋ฆ„ : [์ •ํ˜„์šฑ] ์ „ํ™”๋ฒˆํ˜ธ : [010-9****-****] ๋‚˜์ด : [23] ๊ตญ์ : [JAPAN] ์ฃผ์†Œ: [๋„์ฟ„] ์ฃผ๋ฏผ๋ฒˆํ˜ธ: [์™ธ๊ตญ์ธ๋“ฑ๋ก๋ฒˆํ˜ธ] ์ทจ๋ฏธ : [์ž๊ธฐ] ์Œ์‹ : [์ดˆ๋ฐฅ] ์Œ์‹ : [๋ผ๋ฉ˜] ์Œ์‹ : [๋ˆ๊นŒ์Šค] 
    ์ด๋ฆ„ : [๊น€๋ฏผ์ง€] ์ „ํ™”๋ฒˆํ˜ธ : [010-3****-****] ๋‚˜์ด : [24] ๊ตญ์ : [USA] ์ฃผ์†Œ: [๋‰ด์š•] ์ฃผ๋ฏผ๋ฒˆํ˜ธ: [์™ธ๊ตญ์ธ๋“ฑ๋ก๋ฒˆํ˜ธ] ์Œ์‹ : [ํƒ•์ˆ˜์œก] ์Œ์‹ : [์งœ์žฅ๋ฉด] ์Œ์‹ : [์งฌ๋ฝ•] 
    ์ด๋ฆ„ : [๊น€๊ฒฝํƒœ] ์ „ํ™”๋ฒˆํ˜ธ : [010-4****-****] ๋‚˜์ด : [23] ๊ตญ์ : [THAI] ์ฃผ์†Œ: [๋ฐฉ์ฝ•] ์ฃผ๋ฏผ๋ฒˆํ˜ธ: [์™ธ๊ตญ์ธ๋“ฑ๋ก๋ฒˆํ˜ธ] ์ทจ๋ฏธ : [๋†€๊ธฐ] 
    ์ด๋ฆ„ : [๋…ธ์€ํ•˜] ์ „ํ™”๋ฒˆํ˜ธ : [010-5****-****] ๋‚˜์ด : [23] ๊ตญ์ : [CHINA] ์ฃผ์†Œ: [์—ฐ๋ณ€] ์ฃผ๋ฏผ๋ฒˆํ˜ธ: [์™ธ๊ตญ์ธ๋“ฑ๋ก๋ฒˆํ˜ธ] ์ทจ๋ฏธ : [๋›ฐ๊ธฐ] 
    */

    XmlDomTest04.java

    /*=============================================
    	XmlDomTest04.java 
    	- ์ฝ˜์†”๊ธฐ๋ฐ˜ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ
    	- XML DOM ํ™œ์šฉ → ๋กœ์ปฌ(local) XML ์ฝ์–ด๋‚ด๊ธฐ
    	(breakfast_menu.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 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
    		{
    			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    			DocumentBuilder builder = factory.newDocumentBuilder();
    			Document xmlObj = null;
    			
    			String url = "breakfast_menu.xml";
    			xmlObj = builder.parse(url);
    			
    			Element root = xmlObj.getDocumentElement();
    
    			NodeList menuNodeList = root.getElementsByTagName("food");
    			for (int i = 0; i <menuNodeList.getLength() ; i++)
    			{
    				Node menuNode = menuNodeList.item(i);
    				Element menuElement = (Element)menuNode;
    				
    				System.out.printf("โ–  [ %s ] %s %s์นผ๋กœ๋ฆฌ%n %s%n "
    									, getText(menuElement, "name"), getText(menuElement, "price")
    									, getText(menuElement, "calories"), getText(menuElement, "description"));
    				System.out.println("----------------------------------------------------------------------");
    			}
    			
    			
    		} catch (Exception e)
    		{
    			System.out.println(e.toString());
    		}
    	} // end main
    	
    	private 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;
    		
    	}
    }
    //--==>> ์‹คํ–‰ ๊ฒฐ๊ณผ
    /*
    โ–  [ 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
     ----------------------------------------------------------------------
    โ–  [ French Toast ] $4.50 600์นผ๋กœ๋ฆฌ
     Thick slices made from our homemade sourdough bread
     ----------------------------------------------------------------------
    โ–  [ Homestyle Breakfast ] $6.95 950์นผ๋กœ๋ฆฌ
     Two eggs, bacon or sausage, toast, and our ever-popular hash browns
     ----------------------------------------------------------------------
    
    */

    XmlDomTest05.java

    /*=============================================
    	XmlDomTest05.java
    	- ์ฝ˜์†”๊ธฐ๋ฐ˜ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ
    	- XML DOM ํ™œ์šฉ → ๋กœ์ปฌ(local) XML ์ฝ์–ด๋‚ด๊ธฐ
    	(VEHICLES.xml)
    ==============================================*/
    /*
    ---------------------------------------------------------
    NO	MAKE	MODEL		YEAR	STYLE			PRICE
    ---------------------------------------------------------
    1	Dodge	Durango		1998	Sport Utility	18000
    Options -------------------------------------------------
    	Power_Locks : Yes
    	Power_Window : Yes
    	Stereo	: Radio/Cassette/CD
    	Air_Conditioning : Yes
    	Automatic : Yes
    	Four_Wheel_Drive : Full/Partial
    	Note : Very Clean
    ---------------------------------------------------------
    2	Honda	Civic		1997	Sedan			8000
    Options -------------------------------------------------
    	Power_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 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)
    	{
    		try
    		{
    			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    			DocumentBuilder builder = factory.newDocumentBuilder();
    			Document xmlObj = null;
    			
    			String url = "VEHICLES.xml";
    			xmlObj = builder.parse(url);
    			
    			Element root = xmlObj.getDocumentElement();
    			
    			NodeList vehiclesNodeList = root.getElementsByTagName("VEHICLE");
    			for (int i = 0; i < vehiclesNodeList.getLength(); i++)
    			{
    				Node vehiclesNode = vehiclesNodeList.item(i);
    				Element vehiclesElement = (Element)vehiclesNode;
    				
    				System.out.println("---------------------------------------------------------");
    				System.out.println("NO	MAKE	MODEL	 YEAR	 STYLE	   	  PRICE");
    				System.out.println("---------------------------------------------------------");
    				
    				System.out.printf("%s	%s  %s   %s	 %s	    %s%n"
    									, getText(vehiclesElement, "INVENTORY_NUMBER"), getText(vehiclesElement, "MAKE")
    									, getText(vehiclesElement, "MODEL"), getText(vehiclesElement, "YEAR")
    									, getText(vehiclesElement, "STYLE"), getText(vehiclesElement, "PRICE"));
    				System.out.println("Options -------------------------------------------------");
    				
    				// Option ์ฒ˜๋ฆฌ
    				NodeList optionNodeList = vehiclesElement.getElementsByTagName("OPTIONS");
    				if (optionNodeList.getLength() > 0)
    				{
    					Node optionNode = optionNodeList.item(0);
    					Element optionElement = (Element)optionNode;
    					
    					NodeList opNodeList = optionElement.getChildNodes();
    					for (int j = 0; j < opNodeList.getLength(); j++)
    					{
    						Node opNode = opNodeList.item(j);
    						if (opNode.getNodeType() == 1)
    						{
    							Element opElement = (Element)opNode;
    							System.out.printf("%s : %s%n", opElement.getTagName(), opElement.getTextContent());
    						}
    					}
    					System.out.println();
    				}
    			}
    		
    		} catch (Exception e)
    		{
    			System.out.println(e.toString());
    		}
    		
    		
    	}// end main
    	
    	private 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;
    	}
    
    }
    ๋”๋ณด๊ธฐ

    ---------------------------------------------------------
    NO MAKE MODEL  YEAR  STYLE       PRICE
    ---------------------------------------------------------
    1 Dodge  Durango   1998  Sport Utility     18000
    Options -------------------------------------------------
    Power_Locks : Yes
    Power_Window : Yes
    Stereo : Radio/Cassette/CD
    Air_Conditioning : Yes
    Automatic : Yes
    Four_Wheel_Drive : Full/Partial
    Note : Very clean

    ---------------------------------------------------------
    NO MAKE MODEL  YEAR  STYLE       PRICE
    ---------------------------------------------------------
    2 Honda  Civic   1997  Sedan     8000
    Options -------------------------------------------------
    Power_Locks : Yes
    Power_Window : Yes
    Stereo : Radio/Cassette
    Automatic : Yes
    Note : Like New

    ---------------------------------------------------------
    NO MAKE MODEL  YEAR  STYLE       PRICE
    ---------------------------------------------------------
    3 Dodge  Neon   1996  Sedan     7000
    Options -------------------------------------------------
    Stereo : Radio/Cassette
    Automatic : Yes
    Note : Need minor body works

    ---------------------------------------------------------
    NO MAKE MODEL  YEAR  STYLE       PRICE
    ---------------------------------------------------------
    4 Ferrari  F355   1995  Sport     45000
    Options -------------------------------------------------
    Power_Locks : Yes
    Power_Window : Yes
    Stereo : Radio/Cassette/CD
    Air_Conditioning : Yes
    Note : Luxury car

    ---------------------------------------------------------
    NO MAKE MODEL  YEAR  STYLE       PRICE
    ---------------------------------------------------------
    5 BMW  3 Series   1998  Sedan     40000
    Options -------------------------------------------------
    Power_Locks : Yes
    Power_Window : Yes
    Interiors : Leather
    Stereo : Radio/Cassette/CD
    Air_Conditioning : Yes
    Note : Pre-owned

    ---------------------------------------------------------
    NO MAKE MODEL  YEAR  STYLE       PRICE
    ---------------------------------------------------------
    6 BMW  Z3   1998  Convertible     33000
    Options -------------------------------------------------
    Cover_Material : Plastic
    Power_Locks : Yes
    Power_Window : Yes
    Alarm : Yes
    Interiors : Fabric
    Stereo : Radio/Cassette/CD
    Air_Conditioning : Yes
    Note : Pre-owned, very clean

    ---------------------------------------------------------
    NO MAKE MODEL  YEAR  STYLE       PRICE
    ---------------------------------------------------------
    7 Dodge  RAM   1997  Truck     22000
    Options -------------------------------------------------
    Stereo : Radio
    Max_Load : 1500
    Note : Heavy duty Vehicle

    ---------------------------------------------------------
    NO MAKE MODEL  YEAR  STYLE       PRICE
    ---------------------------------------------------------
    8 Honda  Accord   1995  Sedan     8500
    Options -------------------------------------------------
    Power_Locks : Yes
    Stereo : Radio/Cassette
    Automatic : Yes

    ---------------------------------------------------------
    NO MAKE MODEL  YEAR  STYLE       PRICE
    ---------------------------------------------------------
    9 Dodge  RAM 2500   1996  Truck     25000
    Options -------------------------------------------------
    Stereo : Radio/Cassette
    Max_Load : 2500
    Note : Heavy duty truck

    ---------------------------------------------------------
    NO MAKE MODEL  YEAR  STYLE       PRICE
    ---------------------------------------------------------
    10 Ford  Explorer   1996  Sport Utility     18000
    Options -------------------------------------------------
    Power_Locks : Yes
    Stereo : Radio/Cassette
    Automatic : Yes
    Interiors : Fabric
    Air_Conditioning : Yes
    Note : Pre-owned, very clean

    'XmlStudy > XmlApp' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

    โ— XmlApp 05 ~ 09 [xml url]  (0) 2024.02.02