마샬, 언마샬

마샬, 언마샬

정형화: 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());
 }
}