본문 바로가기

웹개발

[Java] 특정 url에 xml을 파싱하기 / SAXParser 이용

SAXParser를 이용하여 특정 url에 xml을 파싱하기


public class SaxParser extends DefaultHandler {
	StringBuffer buffer = new StringBuffer();
	
	public void startElement(String uri, String localName, String qName,
			Attributes atts) {
		System.out.println("startElement qName: " + qName);
		buffer.setLength(0);
	}
	
	public void characters(char[] ch, int start, int len) throws SAXException{
		buffer.append(ch, start, len); // 버퍼에 data 를 집어 넣기.
	}

	public void endElement(String uri, String localName, String qName) {
		System.out.println( buffer.toString().trim());
		System.out.println("endElement qName: " + qName);
	}

	public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
		SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
		DefaultHandler dh = new SaxParser();		
		parser.parse("http://www.google.com/ig/api?hl=ko&weather=seoul",dh);
	}
}


DefaultHandler 를 상속받고 3개의 method를 이용하여 알아서 파싱된다.

근데 xml내용중에 한글이 있으면 깨지네-_-;; 한글을 받아오려면 마지막에 url을 넣어주면 안되고 따로 가져와서 인코딩을 한번 다시 해줘야 한다.