상세 컨텐츠

본문 제목

xml 에서 특정 태그를 문자열로 추출하는 방법

XML

by happynuri 2008. 2. 20. 17:59

본문

최근 웹서비스를 많이 이용하면서 XML의 사용빈도가 높아지고 있습니다.


그러다 보니, 자연스레 java에서도 XML parser를 기본 내장하고 있죠.


패키지 javax.xml 하위의 클래스들이 바로 이런 XML을 지원하기 위한 java 측의 노력이겠죠.


하지만, DOM/SAX parse를 이용해서 데이터 프로세싱은 문제없이 수행할수 있으나,

특정 태그를 포함한 하위 요소들을 문자열로 가져오는 부분에 대해서는 지원을 하지 않습니다.


이럴때 이용할수 있는 것이 바로 jdom 입니다.


테스트할 XML은 다음과 같습니다.


http://schemas.xmlsoap.org/soap/envelope/\>




위의 XML에서 data 태그만 가져오는 것이 미션이 되겠습니다.


작업순서로는

1) java parse를 이용해서 Document를 생성합니다.(org.w3c.dom.Document)

2) Document에서 필요한 태그만을 object로 추출합니다.(doc.getElementsByTagName(태그명)을 이용 -> 해당 함수는 NodeList라는 묶음을 리턴합니다.

3) NodeList 객체에서 item(인덱스) 함수를 통해서 원하는 Element를 가져옵니다.(이 Element도 org.w3c.dom.Element입니다.)

4) org.w3c.dom.Element 객체(ele)를 jdom의 

  DOMBuilder b = new DOMBuilder();
  org.jdom.Element element = b.build(ele);

  build 함수를 통해서 org.w3c.dom.Element 객체를 org.jdom.Element로 변환을 합니다.

5) org.jdom.output.XMLOutputter 를 이용하여 출력을 준비합니다.

XMLOutputter out = new XMLOutputter();

6) output 함수를 통해서 원하는 출력 스트림으로 출력을 합니다.

   out.output(element, System.out);

   -> 여기서 출력스트림을 이용하므로, ByteArrayOutputStream을 이용하면 데이터를 버퍼에 담아서 사용을 할수가 있겠죠. 하지만, 본소스상에서는 System.out으로 지정을 해서 표준출력으로 출력만 하게 됩니다.

관련글 더보기

댓글 영역