안녕하세요 버섯돌이 유재성입니다.

오늘은 귀차니즘에 모르고 그냥 사용하다 당황했던 애피소드 하나 올려봅니다.
매뉴얼을 보면 알 수 있겠지만 Configuration  라이브러리의 경우
( Site URL : http://commons.apache.org/configuration/ )
리스트성 데이터를 처리하는 기능이 있는데 기본 구분자가 콤머(,)입니다.
이를 모르고 사용하다가 분명 저와 같은 목적으로
이 글을 찾는 분들이 있을지 몰라 문서화 합니다.

참고로, Configuration  라이브러리의 경우

  • Properties files
  • XML documents
  • Windows INI files
  • Property list files (plist)
  • JNDI
  • JDBC Datasource
  • System properties
  • Applet parameters
  • Servlet parameters

    등을 손 쉽게 처리할 수 있는 유틸리티 라이브러리 입니다.
    그중 오늘은 XML의 간단한 사용법을 알아 보도록 하겠습니다.

    [XmlTest.java]
    import org.apache.commons.configuration.ConfigurationException;
    import org.apache.commons.configuration.XMLConfiguration;

    public class XmlTest {
     public static void main(String[] args) throws ConfigurationException {
            XMLConfiguration xml = new XMLConfiguration("config.xml");
            System.out.println(xml.getString("name"));
            System.out.println(xml.getInt("age"));
            System.out.println(xml.getString("보유컴"));
            System.out.println(xml.getList("보유컴"));
        }
    }
     

    [config.xml]
    <?xml version="1.0" encoding="EUC-KR"?>
    <Config>
      <name>유재성</name>
      <age>34</age>
      <보유컴>386, 486, 586</보유컴>
      <보유컴2>386\, 486\, 586</보유컴2>
    </Config>

    [실행결과]
    유재성
    34
    386             <- getString()으로 출력시에는 1번째 데이터만 출력 됨.
    [386, 486, 586] <- getList()로 출력해야 정상적으로 나옴.
    386, 486, 586

    보시는것처럼 사용법이 상당히 간단합니다.*^^*

    XMLConfiguration xml = new XMLConfiguration("config.xml");
    처럼 읽어들일 XML파일을 지정해주면 끝입니다.

    그뒤 config.xml 파일 내용중 읽어들이고자 하는 태그를 지정하면 끝입니다.
    이때 읽어들일 데이터가 String 형태라면 xml.getString()메소드를 이용하면되고,
    숫자 형태로 읽어 들이고자 한다면 xml.getInt()메소드를 이용하면됩니다.

    여기서 이 글을 쓰는 목적으로서 가장 눈 여겨 보셔야할 부분은 <보유컴> 태그입니다.
    데이터가 "386, 486, 586" 처럼 되어있는데 Configuration 라이브러리의 경우
    List 데이터 처리를 쉽게 처리할 수 있도록
    List 데이터의 기본 구분자로  콤머(,)가 설정되어있습니다.

    따라서, <보유컴> 태그의 경우 일반 데이터가 아닌 List 데이터로 인식하게됩니다.
    getString()메소드로 출력할 경우 List데이터 이기때문에
    가장 첫번째 데이터인 386만 출력됩니다.
    모든 데이터를 처리하고자 한다면 getList()메소드를 이용해서
    List 형식으로 받아와야지 정상적으로 출력이 가능합니다.

    하지만, 저장된 데이터가 SQL등의 쿼리문이거나 필요에 의해서
    String형태로 출력되어야 할 경우에는 <보유컴2> 태그처럼 콤머앞에 역슬레쉬(\)를
    넣어 주시면 List 데이터가 아닌 일반 데이터로 인식되기 때문에
    getString()메소드를 이용해서도 정상적으로 출력됨을 알 수 있습니다.

    만약, XML파일의 모든 내용에서 콤머(,)를 이용한 List기능을 이용하고 싶지 않을경우에는
    XMLConfiguration xml = new XMLConfiguration("config.xml");
    명령을 실행하기 전에 static 메소드인 setDefaultListDelimiter() 메소드에
    0을 넣어 주면 기본 List 구분자 기능이 비활성화 됩니다.

    [예]
    XMLConfiguration.setDefaultListDelimiter((char)0);
    XMLConfiguration xml = new XMLConfiguration("config.xml");
           ........ 이하 동일 ........

    용도에 맞게 xml데이터중 콤머 앞에 역슬레쉬(\)를 사용하시거나,
    아니며 소스 코드에서 setDefaultListDelimiter() 메소드를 이용하시기 바랍니다.


     

    [저작권 관련]

    [저작권 관련]부분을 함께 이동하는 경우에 한해서 다른곳으로의 이동을 허락하며

    항상, http://blog.naver.com/starpooh 블로그에 함께 포스팅되므로
    잘 못된 내용의 수정이나 알릴 사항이 있으면 블로그에 메모를 남겨주시기 바랍니다.

    본 게시글의 원본출처는 http://yoo7577.dev4u.net 이며,
    원활한 공유및 관리를 위하여 게시물의 일부 또는 전체의 직접적인 수정을 금합니다.

  • Posted by 버섯돌이_
    ,