我正在尝试解析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(), //);
}
答案 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(), //);
}