2014-11-09 2 views
-2

xml에서 모든 값을 얻고 싶습니다. 하지만 끝에 null 포인터 예외가 직면하고있다. XML에서 각 값을 가져 와서 변수에 할당하는 방법을 알려주십시오. xml = response.get(). asXml();xml in java를 반복하는 방법

    int i=0; 
        while(xml.hasChildNodes()) 
        { 

         NodeList node = xml.getChildNodes().item(0).getChildNodes(); 
         message = node.item(i).getTextContent(); 
        //message = node.item(i).getTextContent(); 

        System.out.println(message); 
        i++; 
        } 

로그 메시지

'13-ARTENGO-P1046' 
    '1' 
    '1614113' 
    '2014-10-16 12:53:33.663165' 
    '13-ARTENGO-P1046' 
    '1' 
    '1799748' 
    '2014-10-16 12:53:33.663165' 
    '13-ARTENGO-P1046' 
    '1' 
    '1799597' 
    '2014-10-16 12:53:33.663165' 
    '13-ARTENGO-P1046' 
    '1' 
    '8225610' 
    '2014-10-16 12:53:33.663165' 
    [error] ShipmentSearch - Error occured due to: null 
    java.lang.NullPointerException 
     at webservices.GetAllBoxDetails.browseAll(GetAllBoxDetails.java:55) 
     at controllers.Application.searchshipment(Application.java:58) 
     at Routes$$anonfun$routes$1$$anonfun$applyOrElse$2$$anonfun$apply$2.apply(routes_routing.scala:77) 
     at Routes$$anonfun$routes$1$$anonfun$applyOrElse$2$$anonfun$apply$2.apply(routes_routing.scala:77) 
     at play.core.Router$HandlerInvoker$$anon$6$$anon$2.invocation(Router.scala:141) 
     at play.core.Router$Routes$$anon$1.invocation(Router.scala:322) 
     at play.core.j.JavaAction$$anon$1.call(JavaAction.scala:31) 
     at play.db.jpa.TransactionalAction$1.apply(TransactionalAction.java:19) 
     at play.db.jpa.TransactionalAction$1.apply(TransactionalAction.java:17) 
     at play.db.jpa.JPA.withTransaction(JPA.java:101) 
     at play.db.jpa.TransactionalAction.call(TransactionalAction.java:14) 
     at play.core.j.JavaAction$$anon$2.apply(JavaAction.scala:74) 
     at play.core.j.JavaAction$$anon$2.apply(JavaAction.scala:73) 
     at play.libs.F$Promise$PromiseActor.onReceive(F.java:420) 
     at akka.actor.UntypedActor$$anonfun$receive$1.applyOrElse(UntypedActor.scala:159) 
     at akka.actor.ActorCell.receiveMessage(ActorCell.scala:425) 
     at akka.actor.ActorCell.invoke(ActorCell.scala:386) 
     at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:230) 
     at akka.dispatch.Mailbox.run(Mailbox.scala:212) 


Please anyone help me to solve this issue. 
+0

버그가 있습니다 ... xml.hasChildNodes()는 XML에 자식이 있으므로 항상 true를 반환합니다. 그런 다음 목록에 더 이상 노드가 없을 때까지 'i'를 증가시킵니다 ... 코드를 수정하십시오. –

+0

XML에 자식 노드가 있는지 확인하고 있습니다. 그런 다음 A에 childnodes가 있는지 확인하지 않고 childnodes B에 액세스합니다. A에 자식 노드가 없으면 예외가 throw 될 수 있습니다. – Rumo

답변

0

클래스 NodeList은 2 가지 방법이 있습니다

for (int i = 0; i < nodeList.getLength(); i++) { 
    Node node = nodeList.item(i); 
    // process the node here. 
} 

당신의 실수가 있었다 : 당신은 다음과 같은 루프를 호출해야합니다, getLength()item(int index)

을 그 xml.hasChildNodes() alwa ys는 자식이있는 경우 true을 반환하고 존재하지 않는 경우 false을 반환합니다.

+0

대단히 고마워. –

관련 문제