마샬, 언마샬
정형화: RDBMX(오라클)
반정형화: XML, JSON, HTML
– JAXP (P는 파싱의 약자. DOM,SAX)
– JAXB(B는 바인드의 약자. xml과 클래스 연결)
비정형화: txt (정규식) ex) .*VO (뒤의 VO 붙은걸 다 달라)
ex) \d{1-3}\\.\d{1-3}\\.\d{1-3}\\.\d{1-3} (ip를 달라)
ex) ^{A-Za-z} 알파벳으로 시작(^)한다
ex) ^{A-Za-z}{0-9}$ 알파벳으로 시작(^)해서 정수로 끝나는($) 문자
1. pom.xml
<!– jaxb-impl 2.2.11 –>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.2.11</version>
</dependency>
<!– jaxb-core 2.2.11 –>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.2.11</version>
</dependency>
<!– jaxb-api 2.2.11 –>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.2.11</version>
</dependency>
—————————————–
<!– json.simple 1.1.1 –>
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
<!– Commons Lang 2.6 –>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<!– Oracle JDBC Driver 10.2.0.4.0 –>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.4.0</version>
</dependency>
OJDBC는 다운로드가 안 될 것이다.
맨 위 쪽에
<repositories>
<repository>
<id>mesir-repo</id>
<url></url>”>http://mesir.googlecode.com/svn/trunk/mavenrepo</url>
</repository>
</repositories> 를 붙여줘야 다이렉트로 받는다.
————————————————————————————————————
info.java
package com.sist.web;
import javax.xml.bind.annotation.XmlRootElement;
import com.sun.xml.txw2.annotation.XmlAttribute;
import com.sun.xml.txw2.annotation.XmlElement;
/*
*
* <info id=””>
* <name></name>
* <age></age>
* </info>
*
*
* 바깥쪽 태그는 클래스 (info)
* 속성은 어트리뷰트 (id)
* 안쪽 태그는 엘리먼트 (name, age)
* 전체를 감쌀 때 루트 엘리먼트
*/
@XmlRootElement
public class Info {
private String name;
private int age;
private String id;
public String getName() {
return name;
}
@XmlElement
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
@XmlElement
public void setAge(int age) {
this.age = age;
}
public String getId() {
return id;
}
@XmlAttribute
public void setId(String id) {
this.id = id;
}
}
——————————————————————
MainClass.java (마샬)
마샬 (클래스를 xml로)
public class MainClass {
public static void main(String[] args) throws Exception{
JAXBContext jc=JAXBContext.newInstance(Info.class);
Info info=new Info();
info.setName(“심청이”);
info.setAge(30);
info.setId(“shim”);
Marshaller m=jc.createMarshaller();
m.setProperty(Marshaller.JAXB_ENCODING, “EUC-KR”);
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
m.marshal(info, new File(“./info.xml”));
System.out.println(“저장완료”);
}
}
MainClass.java (언마샬)
언마샬 (xml을 클래스로)
public class MainClass {
public static void main(String[] args) throws Exception{
JAXBContext jc=JAXBContext.newInstance(Info.class);
Unmarshaller m=jc.createUnmarshaller();
Info info=(Info)m.unmarshal(new File(“./info.xml”));
System.out.println(“Name:”+info.getName());
System.out.println(“Age:”+info.getAge());
System.out.println(“Id:”+info.getId());
}
}