"์์์ด, ๊ทธ๋ผ. ์ด๋ฏธ ์ง์ํ๊ฒ ์ง๋ง, ๊ทธ๊ฒ ์ ๋ถ๋ ์๋์ผ."
"์ด์ JAXB์ ๋ช ๊ฐ์ง ๋ค๋ฅธ ์ธก๋ฉด์ ๋ํด ๋ง์๋๋ฆฌ๊ฒ ์ต๋๋ค. ํ์ง๋ง JSON์์ ํ๋ ๊ฒ์ฒ๋ผ ์ปฌ๋ ์ ๋ถํฐ ์์ํ๊ฒ ์ต๋๋ค."
"JAXB๋ฅผ ์ฌ์ฉํ์ฌ ์ปฌ๋ ์ ์ ์ญ์ง๋ ฌํํ ๋ List ๋ณ์์ ์ฌ์ฉํ ํน์ ์ปฌ๋ ์ (ArrayList, LinkedList, Vector ๋ฑ)์ ๋ํ ๋ถํ์ค์ฑ๋ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์ง๋ฌธ์ ๋ํ ๋ต์ ์ฃผ์์ผ๋ก ์ ๊ณต๋ฉ๋๋ค."
"๋ชจ๋ ๊ฒ์ด ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค. ์ปฌ๋ ์ ์ ํ์ด ์ฃผ์์ ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ JAXB๋ ํด๋น ์ ํ์ ์ฌ์ฉํ์ฌ ๊ฐ์ฅ ์ ์ ํ ์ปฌ๋ ์ ์ ์ ํํ๋ ค๊ณ ์๋ํฉ๋๋ค. ๋ชฉ๋ก์ ๊ฒฝ์ฐ ArrayList๊ฐ ๋๊ณ ๋งต์ ๊ฒฝ์ฐ HashMap ๋ฑ์ด ๋ฉ๋๋ค. ."
"์ค์ ๋ก ๊ฐ ํด๋์ค์๋ ๊ณ ์ ํ ํ๊ทธ๊ฐ ์๊ณ ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ์ ํํ ํด๋์ค๋ฅผ ์ง์ ํ ์ ์๊ธฐ ๋๋ฌธ์ JSON๋ณด๋ค ๋ฌธ์ ๊ฐ ํจ์ฌ ์ ์ต๋๋ค."
"์๋ฅผ ๋ค์ด ๊ณตํต ์กฐ์์ ์์ํ๋ ์์ ๊ทธ๋ฃน์ ์ญ์ง๋ ฌํํด์ผ ํ๋ ๊ฒฝ์ฐ @XmlAny: ์ฃผ์์ ์ฌ์ฉํฉ๋๋ค. "
public static void main(String[] args) throws JAXBException
{
String xmldata = "<zoo><cat/><cat/><dog/><cat/></zoo>";
StringReader reader = new StringReader(xmldata);
JAXBContext context = JAXBContext.newInstance(Cat.class, Zoo.class, Dog.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
Cat cat = (Cat) unmarshaller.unmarshal(reader);
}
@XmlType(name = "zoo") @XmlRootElement class Zoo { @XmlAny public List<Object> animals; } @XmlType(์ด๋ฆ = "๊ณ ์์ด") @XmlRootElement class Cat { ๊ณต๊ฐ ๋ฌธ์์ด ์ด๋ฆ; ๊ณต๊ณต ์ฐ๋ น; ๊ณต๊ฐ ์ ์ ๊ฐ์ค์น; ๊ณ ์์ด() { } } @XmlType(์ด๋ฆ = "๊ฐ") @XmlRootElement ํด๋์ค ๊ฐ { ๊ณต๊ฐ ๋ฌธ์์ด ์ด๋ฆ; ๊ณต๊ณต ์ฐ๋ น; ๊ณต๊ฐ ์ ์ ๊ฐ์ค์น; ๊ณ ์์ด() { } }
"์ปฌ๋ ์ ์ด @XmlAny ์ฃผ์ ์ผ๋ก ํ์๋๋ฉด ์ ์ ํ ๊ฐ์ฒด๋ฅผ ๊ทธ ์์ ๋ฃ์ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ JAXB Unmarshaller ๋ ์ปฌ๋ ์ ์ ์ฑ์ธ ๋ ํ๊ทธ์ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ ๋๋ค."
"์ด ๊ฒฝ์ฐ " <zoo> <cat/><cat/> <dog/> <cat/> </zoo> " ํ๊ทธ ์ํ์ค๋ Cat, Cat, Dog ๋ฐ Cat ๊ฐ์ฒด๊ฐ ์๋ ์ปฌ๋ ์ ์ผ๋ก ๋ณํ๋ฉ๋๋ค. ."
"๊ทธ๊ฒ ๋ด๊ฐ ์์ํ๋ ๊ฒ์ ๋๋ค."
"์ดํ. ์, ๊ทธ๋ฐ๋ฐ ํ ๊ฐ์ง ๋. ํ ์คํธ์ ํ๊ทธ์ ํผํฉ์ ์ญ์ง๋ ฌํํ๋ ๊ฒฝ์ฐ @XmlMixed ์ฃผ์์ ์ฌ์ฉํด์ผ ํฉ๋๋ค."
"๋ค์์ ์ด๋ฌํ XML ์ ํ์ ์์ ๋๋ค."
<data> <items> ํ ์คํธ 1 <item/> ํ ์คํธ 2 <item> ์ด๋ฆ </item> ํ ์คํธ 3 </items> </data>
"์์ฐ. ๊ทธ๋ฐ XML์ด ์๋ค๋ ์ฌ์ค์ ์๊ณ ์์์ด. ๋ชจ๋ ๊ฒ์ด ์์๊ณ ํ๊ทธ๊ฐ ํฌํจ๋์ด ์๊ณ ๊ทธ ๋ฐ์ ๋ชจ๋ ๊ฒ์ ์ต์ํด์ก์ด."
"์กด์ฌํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ JAXB์๋ ์ด ๊ฒฝ์ฐ์๋ ์ฃผ์์ด ์์ต๋๋ค!"
"์ข์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ๋ฌผ์ด๋ณด๊ณ ์ถ์์ต๋๋ค. enum์ ์ด๋ป๊ฒ ์ง๋ ฌํ๋ฉ๋๊น?"
"์ข์ ์ง๋ฌธ์ ๋๋ค! ์ ๋ดค์ต๋๋ค! ๊ทธ ์ฃผ์ ๋ ์ด๋ป๊ฒ๋ ๊ฑด๋๋ฐ์์ต๋๋ค."
"์ด๊ฑฐํ์ ํ์ํ๋ ๋ฐ ์ฌ์ฉํด์ผ ํ๋ ํน๋ณํ @XmlEnum ์ฃผ์์ด ์์ต๋๋ค. ๊ฐ์ ์ซ์ ๋๋ ๋ฌธ์์ด๋ก ์ ์ฅํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค."
"ํน์ enum ํ๋์ ํด๋นํ๋ ๊ฐ์ ์ง์ ํ ์ ์๋ @XmlEnumValue ์ฃผ์๋ ์์ต๋๋ค."
"์ฌ๊ธฐ ๋ช ๊ฐ์ง ์๊ฐ ์์ด์:"
์ซ์ | ๋ฌธ์์ด |
---|---|
|
|
"Holy moly. ์ด๊ฒ ์ด๋์ ํ์ํ ์ง ์์์ด ์ ๋์ง๋ง ๋งค์ฐ ์ ์ฉํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ํ์ค ๋ฌธ์์ด์ด๋ ์ซ์ ๊ฐ์ ์ง์ฐฉํ ํ์๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค."
"์. ์๋ฅผ ๋ค์ด Facebook ์๋ฒ์ ๋ฉ์์ง๋ฅผ ๊ตํํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๊ณ ํ ๋น๋ ๊ฐ ์งํฉ์ด ์๋ ๊ฒฝ์ฐ์ ํธ๋ฆฌํฉ๋๋ค. ์์ ์ ์ด๊ฑฐํ์ ํ ๋นํ๊ธฐ๋ง ํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์๋ํฉ๋๋ค. "
"๋ฉ์ง๋ค์. ์ ๋ ํ์คํ JAXB๋ฅผ ์ข์ํฉ๋๋ค."
"์ข์. ๊ทธ๋ผ ์ค๋์ ์ฌ๊ธฐ๊น์ง. ๊ฐ์ ์ฌ์ด."
GO TO FULL VERSION