peach
10
2019-03-15 08:46:45
3
91

java xml 파싱 코딩 오류 문제


안녕하세요. java xml 파싱하는 과정인데 NULLPOINTER  오류가 나서 문

public class do1{
	
	private static String getTagValue(String tag, Element eElement) {
		// TODO Auto-generated method stub
		
		NodeList nllist = eElement.getElementsByTagName(tag).item(0).getChildNodes(); <- 여기1
		Node nValue = (Node) nllist.item(0);
		if(nValue == null) {
			return null;
		}
		return nValue.getNodeValue();
	}
	
	public static void main(String[] agrs) {
		
		int page = 1;
		try {
			while(true) {
				String url = "http://openapi.airkorea.or.kr"
			    		+ "/openapi/services/rest/ArpltnInforInqireSvc/getMsrstnAcctoRltmMesureDnsty"
			    		+ "?serviceKey=95ARk6WZHONug4tH0ROg0e9mrVlHnrxuxJIAgL%2FKFI9p0U%2BAu6w%2BAGSkAsNQW2QOtdWKbapXMoIDf93qlkfXng%3D%3D&numOfRows=10&pageNo=1&stationName=%EC%A2%85%EB%A1%9C%EA%B5%AC&dataTerm=DAILY&ver=1.3";
				
				//가장 최상위에 있는 태그값을 보여줌.
				
				DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
				DocumentBuilder dbuilder = dbFactory.newDocumentBuilder();
				Document doc = dbuilder.parse(url);
				doc.getDocumentElement().normalize();
				System.out.println("Root element: "+ doc.getDocumentElement().getNodeName());
				
				//파싱할 정보가 있는 태그에 접근하여 리스트 수를 출력.
				
				NodeList nList = doc.getElementsByTagName("item");
				System.out.println("파싱할 리스트 수: "+nList.getLength());
				
				//각 태그의 정보들을 출력
				
				for(int i=0;i<nList.getLength();i++) {
					Node nNode = nList.item(i);
					if(nNode.getNodeType() == Node.ELEMENT_NODE) {
						Element eElement = (Element) nNode;
						System.out.println("###############################");
						//System.out.println(eElement.getTextContent()); 전체 정보
						System.out.println("측정소 명: "+ getTagValue("stationName", eElement)); <- 여기2
					}
				}
				
				page += 1;
				System.out.println("Page Number: "+ page);
				if(page > 11) {
					break;
				}
			}
		}catch(Exception e) {
			e.printStackTrace();
		}	

	}
}

여기1과 여기2에서 오류가 나는데 아무리 해도 모르겠어서 질문남깁니다.

0
0
  • 답변 3

  • Dive_Drink_Develope
    3k
    2019-03-15 09:05:33

    eElement아래에 stationName이 항상 존재하나요?

    메소드 . . . 으로 엮지 마시고 메소드 하나 하고 있는지 체크하는 식으로 해보시죠

    1
  • 어쩌다
    4k
    2019-03-15 10:55:44
    <item>
    <dataTime>2019-03-15 10:00</dataTime>
    <mangName>도시대기</mangName>
    <so2Value>0.002</so2Value>
    <coValue>0.7</coValue>
    <o3Value>0.014</o3Value>
    <no2Value>0.048</no2Value>
    <pm10Value>74</pm10Value>
    <pm10Value24>64</pm10Value24>
    <pm25Value>44</pm25Value>
    <pm25Value24>34</pm25Value24>
    <khaiValue>97</khaiValue>
    <khaiGrade>2</khaiGrade>
    <so2Grade>1</so2Grade>
    <coGrade>1</coGrade>
    <o3Grade>1</o3Grade>
    <no2Grade>2</no2Grade>
    <pm10Grade>2</pm10Grade>
    <pm25Grade>2</pm25Grade>
    <pm10Grade1h>2</pm10Grade1h>
    <pm25Grade1h>3</pm25Grade1h>
    </item>


    아이템 노드에 stationName 이 존재하지 않네요
    1
  • peach
    10
    2019-03-15 17:59:25

    #어쩌다

    헐 제가 다른 URL로 설정했었네요. 알려주셔서 감사합니다!

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.