"๊ทธ๋ ‡๊ฒŒ ๋น ๋ฅด์ง€ ์•Š์•„, ์ Š์€์ด! ๋‘ ๊ฐ€์ง€ ๊ตํ›ˆ์ด ๋” ์žˆ์–ด!"

"๋‘ ๊ฐœ? ์™€์šฐ. ๊ธ€์Ž„์š”. ๋‹น์‹  ์ž์‹ ์˜ ๋ฉ‹์ง์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๋ฌด์—‡์„ ํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๊นŒ! ๋‚˜๋Š” ๊ท€๋ฅผ ๊ธฐ์šธ์ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค."

"JSON๊ณผ ๊ฐ™์€ XML์€ ์„œ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ๊ณผ ์ปดํ“จํ„ฐ ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ๋•Œ ์ž์ฃผ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  XML๋กœ ์ž‘์—…ํ•  ๋•Œ Java ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ์‚ถ์„ ํฌ๊ฒŒ ๋‹จ์ˆœํ™”ํ•˜๋Š” ์—ฌ๋Ÿฌ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ๊ทธ ์ค‘ ํ•˜๋‚˜๋ฅผ ์†Œ๊ฐœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค."

"JAXB๋Š” XML ์ž‘์—…์„ ์œ„ํ•œ ํƒ์›”ํ•œ ๋‹ค๋ชฉ์  ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค."

JAXB-1

"JAXB๋Š” JDK์˜ ์ผ๋ถ€์ด๋ฏ€๋กœ ๋ณ„๋„๋กœ ๋‹ค์šด๋กœ๋“œํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค."

"๋จผ์ € ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์˜ ์˜ˆ๋ฅผ ๋ณด์—ฌ ๋“œ๋ฆฐ ๋‹ค์Œ ๋ถ„์„ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค."

๊ฐœ์ฒด๋ฅผ XML๋กœ ๋ณ€ํ™˜
public static void main(String[] args) throws JAXBException
{
 // Create an object to be serialized into XML
 Cat cat = new Cat();
 cat.name = "Missy";
 cat.age = 5;
 cat.weight = 4;

 // Write the result of the serialization to a StringWriter
 StringWriter writer = new StringWriter();

 // Create a Marshaller object that will perform the serialization
 JAXBContext context = JAXBContext.newInstance(Cat.class);
 Marshaller marshaller = context.createMarshaller();
 marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
 // And here's the serialization itself:
 marshaller.marshal(cat, writer);

 // Convert everything written to the StringWriter
 String result = writer.toString();
 System.out.println(result);
}
๊ฐœ์ฒด๊ฐ€ XML๋กœ ๋ณ€ํ™˜๋˜๋Š” ํด๋ž˜์Šค
@XmlType(name = "cat")
@XmlRootElement
public class Cat
{
 public String name;
 public int age;
 public int weight;

 public Cat()
 {
 }
}
์ง๋ ฌํ™” ๊ฒฐ๊ณผ ๋ฐ ํ™”๋ฉด ์ถœ๋ ฅ:
<cat> 
<name> Missy </name> 
<age> 5 </age> 
<weight> 4 </weight> 
</cat>

"์–ด๋–ค ์ด์œ ์—์„œ์ธ์ง€ ์ด ์ฝ”๋“œ๋Š” JSON ์ง๋ ฌํ™”๋ฅผ ์ƒ๊ฐ๋‚˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ ์ฃผ์„์ด์ง€๋งŒ JSON์€ ObjectMapper๋ฅผ ์‚ฌ์šฉํ–ˆ์œผ๋ฉฐ ์ด๊ฒƒ์€ Context ๋ฐ Marshaller๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค."

"๋„ค. ์ •๋ง ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. Jackson์€ JAXB๋ฅผ ๋ชจ๋ธ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ JAXB๋„ ์–ด๋”˜๊ฐ€์—์„œ ๋ณต์‚ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ๋ถ€ํ„ฐ ์ฒœ์žฌ์ ์ธ ๊ฒƒ์„ ๋ฐœ๋ช…ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค."

"๊ทธ๋Ÿฐ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค."

"์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค."

"4-7ํ–‰์—์„œ Cat ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  ๋ฐ์ดํ„ฐ๋กœ ์ฑ„์›๋‹ˆ๋‹ค."

"10๋ฒˆ์งธ ์ค„์—์„œ Writer ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค."

"13๋ฒˆ์งธ ์ค„์—์„œ '์ปจํ…์ŠคํŠธ'๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ObjectMapper์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ๋‘ ๊ฐœ์˜ ์ถ”๊ฐ€ ์ž์‹ ๊ฐœ์ฒด๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. Marshaller ๋Š” ์ง๋ ฌํ™”์šฉ์ด๊ณ  Unmarshaller ๋Š” ์—ญ์ง๋ ฌํ™”์šฉ์ž…๋‹ˆ๋‹ค. Jackson๊ณผ ์•ฝ๊ฐ„์˜ ์ฐจ์ด๊ฐ€ ์žˆ์ง€๋งŒ ๊ทผ๋ณธ์ ์œผ๋กœ ๋‹ค๋ฅด์ง€ ์•Š๋‹ค."

"14ํ–‰์—์„œ Marshaller ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค . ๋งˆ์ƒฌ๋ง์€ ์ง๋ ฌํ™”์™€ ๋™์˜์–ด์ž…๋‹ˆ๋‹ค."

"15ํ–‰์—์„œ โ€‹โ€‹FORMATTED_OUTPUT ์†์„ฑ์„ TRUE๋กœ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฒฐ๊ณผ์— ์ค„ ๋ฐ”๊ฟˆ๊ณผ ๊ณต๋ฐฑ์ด ์ถ”๊ฐ€๋˜์–ด ์ฝ”๋“œ๋ฅผ ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๊ณ  ํ•œ ์ค„์— ๋ชจ๋“  ํ…์ŠคํŠธ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."

"17ํ–‰์—์„œ ๊ฐœ์ฒด๋ฅผ ์ง๋ ฌํ™”ํ•ฉ๋‹ˆ๋‹ค."

"20-21ํ–‰์—์„œ ์ง๋ ฌํ™” ๊ฒฐ๊ณผ๋ฅผ ํ™”๋ฉด์— ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค."

"@XmlType(name = 'cat&') ๋ฐ @XmlRootElement ์ฃผ์„์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?"

" @XmlRootElement๋Š” ์ด ๊ฐœ์ฒด๊ฐ€ XML ์š”์†Œ์˜ 'ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ'๊ฐ€ ๋  ์ˆ˜ ์žˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ฆ‰, ์ตœ์ƒ์œ„ ์ˆ˜์ค€ ์š”์†Œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋‹ค๋ฅธ ๋ชจ๋“  ์š”์†Œ๋ฅผ โ€‹โ€‹ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."

" @XmlType(name = 'cat')์€ ํด๋ž˜์Šค๊ฐ€ JAXB ์ง๋ ฌํ™”์— ๊ด€๋ จ๋˜์–ด ์žˆ์Œ์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ ์ด ํด๋ž˜์Šค์— ๋Œ€ํ•œ XML ํƒœ๊ทธ์˜ ์ด๋ฆ„๋„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค."

"์ข‹์•„, ์ด์ œ XML ์—ญ์ง๋ ฌํ™”์˜ ์˜ˆ๋ฅผ ๋ณด์—ฌ์ฃผ๊ฒ ๋‹ค."

XML์—์„œ ๊ฐœ์ฒด ๋ณ€ํ™˜
public static void main(String[] args) throws JAXBException
{
 String xmldata = "<cat><name>Missy</name><age>5</age><weight>4</weight></cat>";
 StringReader reader = new StringReader(xmldata);

 JAXBContext context = JAXBContext.newInstance(Cat.class);
 Unmarshaller unmarshaller = context.createUnmarshaller();

 Cat cat = (Cat) unmarshaller.unmarshal(reader);
}
๊ฐœ์ฒด๊ฐ€ XML์—์„œ ์—ญ์ง๋ ฌํ™”๋˜๋Š” ํด๋ž˜์Šค
@XmlType(name = "cat")
@XmlRootElement
public class Cat
{
 public String name;
 public int age;
 public int weight;

 public Cat()
 {
 }
}

"๋ชจ๋“  ๊ฒƒ์ด ์žญ์Šจ๊ณผ ๊ฑฐ์˜ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋งŒ์ผ์˜ ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ ์—ฌ๊ธฐ์„œ ์ง„ํ–‰๋˜๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค."

"3๋ฒˆ์งธ ์ค„์—์„œ ์—ญ์ง๋ ฌํ™”ํ•  XML์„ ์ €์žฅํ•˜๋Š” ๋ฌธ์ž์—ด์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค ."

"4ํ–‰์—์„œ XML ๋ฌธ์ž์—ด์„ StringReader ๋กœ ๋ž˜ํ•‘ํ•ฉ๋‹ˆ๋‹ค ."

"6ํ–‰์—์„œ ํด๋ž˜์Šค ๋ชฉ๋ก์„ ์ „๋‹ฌํ•˜๋Š” JAXB ์ปจํ…์ŠคํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค ."

"7ํ–‰์—์„œ ์—ญ์ง๋ ฌํ™”๋ฅผ ์ˆ˜ํ–‰ํ•  ๊ฐœ์ฒด์ธ Unmarshaller๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค ."

"๋ผ์ธ 9์—์„œ ํŒ๋…๊ธฐ ๊ฐœ์ฒด์—์„œ XML์„ ์—ญ์ง๋ ฌํ™”ํ•˜๊ณ  Cat ๊ฐœ์ฒด๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค."

"์ด์ œ ๋ชจ๋“  ๊ฒƒ์ด ๊ฑฐ์˜ ๋ช…๋ฐฑํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ช‡ ์‹œ๊ฐ„ ์ „์— ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์•Œ์•„๋‚ด๋ ค๊ณ  ๋จธ๋ฆฌ๋ฅผ ์ฅ์–ด์งœ๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค."

"๋‹น์‹ ์ด ๋” ๋˜‘๋˜‘ํ•ด์ง€๋ฉด ํ•ญ์ƒ ๊ทธ๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚ฉ๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ๊ฒƒ์ด ๋‹จ์ˆœํ•ด์ง‘๋‹ˆ๋‹ค."

"๋‚˜๋Š” ์ ์  ๋” ๋˜‘๋˜‘ํ•ด์ง€๊ณ  ์žˆ๋‹ค๊ณ ? ๋‚˜๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๊ธฐ๋ปํ•  ์ˆ˜๋ฐ–์— ์—†๋‹ค."

"์ข‹์Šต๋‹ˆ๋‹ค. JAXB ์ง๋ ฌํ™” ๊ฒฐ๊ณผ๋ฅผ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ฃผ์„ ๋ชฉ๋ก์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค."

JAXB ์ฃผ์„ ์„ค๋ช…
@XmlElement(์ด๋ฆ„) ๋“คํŒ ๊ทผ์ฒ˜์— ๋ฐฐ์น˜.
ํ•„๋“œ๋Š” XML ์š”์†Œ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
ํƒœ๊ทธ์˜ ์ด๋ฆ„์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
@XmlAttribute(์ด๋ฆ„) ๋“คํŒ ๊ทผ์ฒ˜์— ๋ฐฐ์น˜.
ํ•„๋“œ๋Š” XML ์†์„ฑ์œผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค!
์†์„ฑ์˜ ์ด๋ฆ„์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
@XmlElementWrapper(nillable = true) ๋“คํŒ ๊ทผ์ฒ˜์— ๋ฐฐ์น˜.
์š”์†Œ ๊ทธ๋ฃน์— ๋Œ€ํ•ด '๋ž˜ํผ ํƒœ๊ทธ'๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
@XmlType ํด๋ž˜์Šค ๊ทผ์ฒ˜์— ๋ฐฐ์น˜.
๊ธฐ๋ณธ ์ƒ์„ฑ์ž๊ฐ€ ์ „์šฉ์ธ ๊ฒฝ์šฐ ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐฉ๋ฒ•์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
@XmlJavaTypeAdapter ๋“คํŒ ๊ทผ์ฒ˜์— ๋ฐฐ์น˜.
ํ•„๋“œ๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•  ํด๋ž˜์Šค๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

"ํฅ๋ฏธ๋กญ๊ตฐ์š”! ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ์ฃผ์„์„ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์„ค๋ช…์€ ํ•œ ๊ฐ€์ง€์ด์ง€๋งŒ ์ž‘์—… ์˜ˆ๋Š” ๋‹ค๋ฅธ ๊ฒƒ์ž…๋‹ˆ๋‹ค."

"์ข‹์•„์š”. ์˜ˆ๋ฅผ ๋ณด์—ฌ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. JAXB๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•„๋“œ ๋Œ€์‹  getter/setter ๋ฉ”์„œ๋“œ์— ์ฃผ์„์„ ๋‹ฌ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค."

"๋‚ด๊ฐ€ ์•ฝ์†ํ•œ ์˜ˆ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค."

๊ฐœ์ฒด๋ฅผ XML๋กœ ๋ณ€ํ™˜
public static void main(String[] args) throws JAXBException
{
 // Create Cat and Zoo objects to be serialized into XML
 Cat cat = new Cat();
 cat.name = "Missy";
 cat.age = 5;
 cat.weight = 4;

 Zoo zoo = new Zoo();
 zoo.animals.add(cat);
 zoo.animals.add(cat);

 // Write the result of the serialization to a StringWriter
 StringWriter writer = new StringWriter();

 // Create a Marshaller object that will perform the serialization
 JAXBContext context = JAXBContext.newInstance(Cat.class, Zoo.class);
 Marshaller marshaller = context.createMarshaller();
 marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
 // Here's the serialization itself
 marshaller.marshal(zoo, writer);

 // Convert everything written to the StringWriter into a String
 System.out.println(writer.toString());
}
๊ฐœ์ฒด๊ฐ€ XML๋กœ ๋ณ€ํ™˜๋˜๋Š” ํด๋ž˜์Šค
@XmlType(name = "zoo")
@XmlRootElement
public class Zoo
{
 @XmlElementWrapper(name = "wild-animals", nillable = true)
 @XmlElement(name = "tiger")
 public List<Cat> animals = new ArrayList<>();
}

public class Cat
{
 @XmlElement(name = "catname")
 public String name;
 @XmlAttribute(name = "age")
 public int age;
 @XmlAttribute(name = "w")
 public int weight;

 public Cat()
 {
 }
}
์ง๋ ฌํ™” ๊ฒฐ๊ณผ ๋ฐ ํ™”๋ฉด ์ถœ๋ ฅ:
<zoo> 
<wild-animals> 
<tiger age = "5" w = "4"> 
<catname>Missy</catname> 
</tiger> 
<tiger age = "5" w = "4"> 
<catname>Missy </catname> 
</tiger> 
</wild-animals> 
</zoo>

"์ด๋ฒˆ์—๋Š” Cat ๊ฐœ์ฒด๋ฅผ ์ง๋ ฌํ™”ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ Cat ๊ฐœ์ฒด ์ปฌ๋ ‰์…˜์„ ์ €์žฅํ•˜๋Š” Zoo ๊ฐœ์ฒด๋ฅผ ์ง๋ ฌํ™”ํ•œ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค."

"๊ณ ์–‘์ด ๊ฐœ์ฒด๊ฐ€ ์ปฌ๋ ‰์…˜์— ๋‘ ๋ฒˆ ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฏ€๋กœ XML์— ๋‘ ๋ฒˆ ์žˆ์Šต๋‹ˆ๋‹ค."

"์ปฌ๋ ‰์…˜์—๋Š” ์ปฌ๋ ‰์…˜์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ โ€‹โ€‹๊ฐ์‹ธ๋Š” ์ž์ฒด ' ์•ผ์ƒ ๋™๋ฌผ ' ํƒœ๊ทธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค."

" ์—ฐ๋ น ๋ฐ ์ฒด์ค‘ ์š”์†Œ๋Š” ์—ฐ๋ น ๋ฐ w w ์†์„ฑ์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค ."

" @XmlElement ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ ์–‘์ด ํƒœ๊ทธ๋ฅผ ํ˜ธ๋ž‘์ด ํƒœ๊ทธ๋กœ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค ."

"17ํ–‰์— ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์ด์‹ญ์‹œ์˜ค. ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๋Š” ๋‘ ํด๋ž˜์Šค( Zoo ๋ฐ Cat )๋ฅผ JAXB ์ปจํ…์ŠคํŠธ์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ์ง๋ ฌํ™”์— ๊ด€๋ จ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค."

"์˜ค๋Š˜์€ ๋งค์šฐ ํฅ๋ฏธ๋กœ์šด ๋‚ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์ •๋ณด๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์Šต๋‹ˆ๋‹ค."

"๋„ค. ๋ฐ˜๊ฐ‘์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ž ์‹œ ์‰ฌ์—ˆ๋‹ค๊ฐ€ ๊ณ„์†ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค."