有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在java中迭代xml

我想从xml中获取所有值,直到它结束。但最后我面临空指针异常。请告诉我如何从xml中获取每个值并将其分配给变量。 xml=响应。get()。asXml()

                    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.

共 (1) 个答案

  1. # 1 楼答案

    NodeList有2个方法:getLength()item(int index)

    因此,您应该按如下方式在循环中调用它们:

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

    您的错误是xml.hasChildNodes()如果子项存在,则总是返回true;如果子项不存在,则总是返回false