- 필요라이브러리 ( 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를 찾는 방법 확인할것!!
일단 테스트하여 확인한것만 정리함.
추후 더 고려할 사항 수정해 넣자!!!
댓글 없음:
댓글 쓰기