๋ชฉ์ฐจ
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;
}
}