1. XML 문서객체 생성
Document doc = new Document();
2. 최상위 부모노드(근노드, root node)생성
Element deptsNode = new Element("depts");
3. 자식 노드들 생성(DBMS table에서 조회된 결과)
List<DeptVO\> list = xxDAO.selectDept();
Element deptnoNode = null;
Element dnameNode = null;
Element locNode = null;
Element deptNode = null;
for(DeptDomain dd : list){
deptnoNode = new Element("deptno");
deptnoNode.setText(String.valueOf(dd.getDeptno()));
dnameNode = new Element("dname");
dnameNode.setText(dd.getDname());
locNode = new Element("loc");
dnameNode.setText(dd.getLoc());
4. 부모 노드에 추가
deptNode = new Element("dept");
deptNode.addContent(deptnoNode);
deptNode.addContent(dnameNode);
deptNode.addContent(locNode);
5. 최상위 부모노드에 추가
deptsNode.addContent(deptNode)
}//end for
select에 조회된 결과를 저장하는 VO
작성방법은 VO작성과 같다.
XML node를 찾고, node사이에 값을 얻는 것.
<name>홍길동</name>
사용법
1. Builder 생성 - XML을 읽어들여 객체로 생성하는 클래스
SAXBuilder builder = new SAXBuilder();
2. XML과 연결하여 Document클래스를 사용하여 객체로 얻는다.
Local => File class 사용 => 프로그램의 환경설정용으로 사용
Web => URL사용 => 데이터를 얻기 위해서 사용
Document doc = builder.build(new File("절대경로"));//Local에 존재하는 XML얻기
Document doc = builder.build(new java.net.URL("URL"));//Web server에 존재하는 XML얻기
3. 최상위 부모노드를 얻기
Element rootNode = doc.getRootElement();
4. 자식 노드 얻기
- 자식노드가 하나인 경우
Element subNode = rootNode.getChild("노드명");
- 자식노드가 여러 개일 경우
List<Element\> subNodes = rootNode.getChildren("노드명");
- 노드가 하나인 경우 값 얻기
String value = subNode.getValue();
- 여러 개의 노드에서 값 얻기
for(Element subNode : subNodes){
//특정 노드일 때만 값을 얻어서 지정된 변수에 할당
if("노드명".equals(subNode.getName())){
변수명 = subNode.getValue();
}//end if
}//end for
1. Builder 생성
SAXBuilder sb = new SAXBuilder();
2. XML문서에 접근하여 Document객체로 생성
Document doc = sb.build(new File("c:/dev/.../msg.xml"));
Document doc = sb.build(new URL("http://loca.../msg.xml"));
3. 최상위 부모노드 얻기
Element rootNode = doc.getRootElement();
4. 자식노드 얻기
Element msgNode = rootNode.getChild("msg");
5. 파싱
String value = msgNode.getValue();
1. 빌더 생성
SAXBuilder builder = new SAXBuilder();
2. XML문서 객체얻기
Document doc = builder.build();//new File() / new URL()
3. 최상위 부모노드 얻기
Element rootNode = doc.getRootElement();
4. 자식노드들 얻기
List<Element>deptNodes = rootNode.getChildren("dept");
5. 반복하면서 자식 노드얻기
Element deptnoNode = null;
Element dnameNode = null;
Element locNode = null;
for(Element deptNode : deptNodes){
deptnoNode = deptNode.getChild("deptno");
}//end for
또는
for(Element someNode : deptNodes){
if("노드명".equals(someNode.getName())){
변수명.someNode.getValue();
}//end if
}//end for
6. 특정노드의 값 얻어 변수저장(parsing)