본문 바로가기
개발/자바 Java

[자바 Java] XML 값가져오기

by 언제나초심. 2016. 5. 1.
반응형

개요

일시적으로 XML 에서 데이터를 읽어와서 DB 를 생성하기 위한 목적으로 만든 소스 입니다. 


대충 이렇게 하니 되는구나 를 보시고, 좋은 소스들은 검색해보시기 바랍니다. 



본문

작업환경 : Android Studio 2.1

JDK : 1.8.0_66

테스트일자: 2016-05-01



소스 출처 : 구글에서 막 검색해서 짜깁고 짜깁다가, 결국은 한줄한줄 테스트를 거치면서 완성한 소스. ㅠㅠ 퍼온 소스들은 미묘하게 잘 안 되어서...환경의 차이인가?




xml 형태 예시


<?xml version="1.0" encoding="UTF-8"?>
<list>
	<item>
		<id>item 1</id>
	</item>
	<item>
		<id>item 2</id>
	</item>
	<item>
		<id>item 3</id>
	</item>
</list>




소스 예시


public void assignData(String uri){

    try{
            DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
            Document xml = documentBuilder.parse(uri);

            Element root = xml.getDocumentElement();
            NodeList nodeList = root.getElementsByTagName("item");

            if(nodeList.getLength() ==0) return;
            for(int i=0; i<nodeList.getLength(); i++){
                Node nodeItem = nodeList.item(i);

                try {
                    String id = getTagValue("id",(Element)nodeItem);
                    System.out.println(id);
                    //여기서 값을 대입하시면 됩니다. 
                    //저의 경우는 데이터용 클래스를 따로 반들어서 getter setter 로 사용하였습니다. 
                } catch (Exception e) {
                }
            }
        } catch (ParserConfigurationException e){
        } catch (SAXException e){
        } catch (IOException e){
        } catch (Exception e){
        }
}

private String getTagValue(String sTag, Element element) {
    try{
        String result = element.getElementsByTagName(sTag).item(0).getTextContent();
        return result;
    } catch(NullPointerException e){
        return "";
    } catch(Exception e){
        return "";
    }
}




이렇게 해놓고 사용 시에는 assignData(주소) 이런식으로 사용하시면 됩니다. 더 손대다보면 끝이없을 것 같아서 샘플식으로 단순하게 만들어두었습니다. 




반응형