For循环不循环遍历元素

时间:2015-10-27 09:41:34

标签: java arrays nodes

我正在尝试解析XML(图像和文本)中的值,但是当我想在应用程序中返回每个单独的值时,此代码只是一遍又一遍地返回相同的值。谁能告诉我怎么做?当我尝试运行(i)通过它我得到此错误当我尝试该代码时它会抛出此错误:    无法启动活动ComponentInfo {com.example.shannon.dogs / com.example.shannon.dogs.ActivityOne}:java.lang.NullPointerException:尝试调用接口方法'org.w3c.dom.Node org.w3c.dom。 Node.getFirstChild()'在空对象引用上 -

    NodeList nameNodeList = doc.getElementsByTagName("name");
    NodeList originNodeList = doc.getElementsByTagName("origin");
    NodeList colorNodeList = doc.getElementsByTagName("color");
    NodeList imageNodeList = doc.getElementsByTagName("image");
    NodeList heightNodeList = doc.getElementsByTagName("height");
    NodeList weightNodeList = doc.getElementsByTagName("weight");
    NodeList groomingNodeList = doc.getElementsByTagName("grooming");
    //NodeList infoNodeList = doc.getElementsByTagName("info");
    NodeList lifespanNodeList = doc.getElementsByTagName("lifespan");
    NodeList urlNodeList = doc.getElementsByTagName("url");


        //create data
        data = new Dog[nameNodeList.getLength()];
       for (int i = 0; i < data.length; i++) {
          data[i] = new Dog(
                nameNodeList.item(0).getFirstChild().getNodeValue(),
                originNodeList.item(0).getFirstChild().getNodeValue(),
                colorNodeList.item(0).getFirstChild().getNodeValue(),
                imageNodeList.item(0).getFirstChild().getNodeValue(),
                heightNodeList.item(0).getFirstChild().getNodeValue(),
                weightNodeList.item(0).getFirstChild().getNodeValue(),
                groomingNodeList.item(0).getFirstChild().getNodeValue(),
                lifespanNodeList.item(0).getFirstChild().getNodeValue(),
                urlNodeList.item(0).getFirstChild().getNodeValue());
        //infoNodeList.item(i).getFirstChild().getNodeValue(),  //);
    }

1 个答案:

答案 0 :(得分:2)

你不是在迭代它们。你只是看第一个元素。尝试将0改为i以与for循环内联

data = new Dog[nameNodeList.getLength()];
for (int i = 0; i < data.length; i++) {
    data[i] = new Dog(
            nameNodeList.item(i).getFirstChild().getNodeValue(),
            originNodeList.item(i).getFirstChild().getNodeValue(),
            colorNodeList.item(i).getFirstChild().getNodeValue(),
            imageNodeList.item(i).getFirstChild().getNodeValue(),
            heightNodeList.item(i).getFirstChild().getNodeValue(),
            weightNodeList.item(i).getFirstChild().getNodeValue(),
            groomingNodeList.item(i).getFirstChild().getNodeValue(),
            lifespanNodeList.item(i).getFirstChild().getNodeValue(),
            urlNodeList.item(i).getFirstChild().getNodeValue());
    //infoNodeList.item(i).getFirstChild().getNodeValue(),  //);
}