2007. 5. 23. 18:03
A&J프로젝트
Digester.java 는 읽을 xml의 엘리멘트와 애트리뷰트이다.
엘리멘트는 xml의 시작태그와 종료태그를 말한다. 그 사이의 값을 읽을때 사용하고 애트리뷰트는 안의 속성을 말한다.
예를 들어.
<RESULT version='2.0'>
<NAME>jupid</NAME>
<VALUE>alex~~~~~~~~~~~~</VALUE>
<CHILD>
<NAME>jupid1</NAME>
<VALUE>alex~~~~~~~~~~~~!</VALUE>
</CHILD>
<CHILD>
<NAME>jupid2</NAME>
<VALUE>alex~~~~~~~~~~~~@</VALUE>
</CHILD>
<CHILD>
<NAME>jupid3</NAME>
<VALUE>alex~~~~~~~~~~~~#</VALUE>
</CHILD>
<CHILD>
<NAME>jupid4</NAME>
<VALUE>alex~~~~~~~~~~~~$</VALUE>
<CHILD1>
<NAME>jupid4</NAME>
<VALUE>alex~~~~~~~~~~~~$</VALUE>
</CHILD1>
</CHILD>
</RESULT>
value와 name은 엘리멘트이고 version은 애트리뷰트이다.
child는 리스트로 받아서 리스트 안에있는 value와 name을 set,get하는 클래스를 다시 만든다.
Dige.java
읽을 파일을 설정한다. reader로 읽고 싶다면 String을 쓴다.
다이제스트 객체를 생성하고
dg.addObjectCreate("RESULT",dt.DigesterTest.class); //RESULT 경로에서 자바빈 클래스 매칭
RESULT를 만나면 파싱을 시작한다.라는 같다..
dg.addBeanPropertySetter("RESULT/NAME","nameG");
dg.addBeanPropertySetter("RESULT/VALUE","value"); //RESULT/VALUE 경로를 자바빈 변수에 설정
RESULT/VALUE 은 자바빈에 넣어라 같음..
dg.addObjectCreate("RESULT/CHILD",dt.Child.class); //경로를 바꿔 다른 클래스 생성.. 경로를 바뀜..차일드이기 때문에
dg.addSetNext("RESULT/CHILD", "addChild"); //위에서 보면 차일드는 이름은 같고 안에 다른 애트리뷰트들을 가지고 있다. 이것들을 표현하기 위해 자바의 for문 처럼 "돌아라" 뜻으로 이해함..
dg.addSetProperties("RESULT","version","version"); //속성을 찍기 위해 표현
이것은 속성을 자바빈에 넣어라 이다. 위에서 설명한 dg.addBeanPropertySetter와 좀 다르다..version이 두번나온다. 속성이기때문인가?
Object obj= dg.parse(file); //상단에 파일로 적었기 때문에 (file)로 했다.
스트링으로 하고싶다면 (reader)를 쓴다.
결과
xml 파일을 읽은 모습이다.