2012년 8월 5일 일요일

JDom 예제(작성미완료)



- 필요라이브러리 ( http://www.jdom.org/downloads/index.html )
jaxen-core.jar
jaxen-jdom.jar
saxpath.jar
xalan.jar
xerces.jar
xml-apis.jar
jdom.jar


- 예제 ( xml파일을 읽어서 내용바꾸기 다시 file로 저장하기)
   SAXBuilder builder = new SAXBuilder();
  builder.setValidation(false);  //규칙체크. 어떤 규칙인지 확인안해봄.
  //builder.setIgnoringBoundaryWhitespace(true);  //space등을 지움. 사람이 보는문서라면 하지 않는것이..
  Document root = builder.build( new File("in/XXX.xml"));
  //찾고자 하는 node를 path로. 최종node이름으로만 찾는방법 찾아내자
  //<Window>  <Form> <colinfo Id="bla"> </colinfo> </Form>  </Window>   <!--요런상황에서 colinfo node리스트를 얻는다.-->
  XPath xpath = XPath.newInstance("/Window/Form/colinfo"); 
  List contents = xpath.selectNodes(root);
  for( int i=0; i < contents.size(); i++){
   Element content = (Element) contents.get(i);
   if( StringUtils.equals( content.getAttributeValue("Id"), "value1") ){  // "Id" 라는 attribute의 값이 "value1" 이라면, 대소문자 조심!!
    log.debug("content : " + content.getAttributeValue("Id") );
    content.setAttribute("Id" , "changedVal");  //"Id"라는 attribute의 값 value1 -> changedVal로 바꾼다.
   }
  }
  File outf = new File("in/XXX.xml.out");
  if( !outf.exists()){
   outf.createNewFile();
  }
  FileOutputStream f = new FileOutputStream("in/XXX.xml.out");
  OutputStreamWriter writer = new OutputStreamWriter(f, "euc-kr");
  XMLOutputter outp = new XMLOutputter();
  outp.output(root, writer);
  writer.close();

//TODO 한글처리 추가로 확인할것!!
//TODO 마지막 node명으로 Element를 찾는 방법 확인할것!!

일단 테스트하여 확인한것만 정리함.
추후 더 고려할 사항 수정해 넣자!!!

댓글 없음: