XML파일 정보를 읽어 Java VO에 저장

■ DB접속 정보가 저장된 XML 설정 파일(config-properties.xml)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
  <comment>database configuration</comment>
	
  <!-- db정보 -->
  <entry key="jdbc.driverClass.master">com.mysql.jdbc.Driver</entry>
  <entry key="jdbc.url.master">jdbc:mysql://127.0.0.1:3306/nextdb</entry>
  <entry key="jdbc.username.master">nextman</entry>
  <entry key="jdbc.password.master">pass</entry>
	
</properties>

 
 
 

■ DB접속 정보가 저장된 XML 설정 파일읽어서 저장할 Java Value Object(DbInfoVO.java)

package pilot.simpletomcat;

public class DbInfoVO {
  private String url;
  private String driverClass;
  private String user;
  private String password;
  public String getUrl() {
    return url;
  }
  public void setUrl(String url) {
    this.url = url;
  }
  public String getDriverClass() {
    return driverClass;
  }
  public void setDriverClass(String driverClass) {
    this.driverClass = driverClass;
  }
  public String getUser() {
    return user;
  }
  public void setUser(String user) {
    this.user = user;
  }
  public String getPassword() {
    return password;
  }
  public void setPassword(String password) {
    this.password = password;
  }	
}

 
 
 

■ DB접속 정보가 저장된 XML 설정 파일을 읽어서 저장하는 Junit 테스트(DbInfoVO.java)

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

import java.io.File;
import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.junit.Before;
import org.junit.Test;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

import pilot.simpletomcat.DbInfoVO;

public class XmlReadTest {

  private static final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  private DocumentBuilder builder;
  private Document document;

  @Before
  public void setUp() throws Exception {
    StringBuilder sb = new StringBuilder();
    sb.append(System.getProperty("user.dir"));
    sb.append(File.separator + "config"+File.separator +"config-properties.xml");
    System.out.println( ">>> path : " + sb.toString() );

    factory.setValidating(false);

    try {
      factory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
      builder = factory.newDocumentBuilder();
      document = builder.parse(new File(sb.toString()));
    } 
    catch (ParserConfigurationException pce) {
      pce.printStackTrace();
    } 
    catch (SAXException se) {
      se.printStackTrace();
    } 
    catch (IOException ioe) {
      ioe.printStackTrace();
    }
    
    document.getDocumentElement().normalize();
  }
    
  @Test
  public void testXmlRead() {
    
    DbInfoVO dbInfo = new DbInfoVO();
    
    Element element = null;
    Node node = null;
    NodeList nodeList = document.getElementsByTagName("entry");
    
    for( int i=0; i<nodeList.getLength(); i++ ) {
      node = nodeList.item(i);
      element = (Element)node;
    
      System.out.println( "" + element.getAttribute("key") +"\t"+ element.getTextContent() );
    
      if( element.getAttribute("key").equals("jdbc.driverClass.master") )
        dbInfo.setDriverClass( element.getTextContent() );
      if( element.getAttribute("key").equals("jdbc.url.master") ) 
        dbInfo.setUrl( element.getTextContent() );
      if( element.getAttribute("key").equals("jdbc.username.master") ) 
        dbInfo.setUser( element.getTextContent() );
      if( element.getAttribute("key").equals("jdbc.password.master") ) 
        dbInfo.setPassword( element.getTextContent() );	
    }
    
    assertEquals("com.mysql.jdbc.Driver", dbInfo.getDriverClass());
    assertEquals("jdbc:mysql://127.0.0.1:3306/nextdb", dbInfo.getUrl());
    assertEquals("nextman", dbInfo.getUser());
    assertEquals("pass", dbInfo.getPassword());
  }
}

 
 
 

■ eclipse상에서 maven 타입으로 생성된 파일 구조