我正在使用XML文件here
我有以下代码:
Document doc = (Document) docBuilder.parse(new URL("http://api.irishrail.ie/realtime/realtime.asmx/getStationDataByNameXML?StationDesc=" + dstation).openStream());
doc.getDocumentElement().normalize();
NodeList trains = doc.getElementsByTagName("objStationData");
for(int i = 0; i<trains.getLength(); i++){
if(trains.item(i).getAttributes().getNamedItem("Direction").getTextContent().trim().equals("Northbound")){
System.out.println(trains.item(i).getAttributes().getNamedItem("Destination").getTextContent().trim());
}
}
我在if语句中得到Null Pointer异常。为什么是这样?对象存在于XML文件中,您可以在上面的链接中看到。
答案 0 :(得分:2)
这样的事情应该有效。由于您了解XML的结构并且您正在调用getElementsByTagName
,因此您知道可以安全地将节点从NodeList
转换为Element
个对象。
Document doc = (Document) docBuilder.parse(new URL("http://api.irishrail.ie/realtime/realtime.asmx/getStationDataByNameXML?StationDesc=" + dstation).openStream());
doc.getDocumentElement().normalize();
NodeList trains = doc.getElementsByTagName("objStationData");
for(int i = 0; i<trains.getLength(); i++){
Element objStationDataElement = (Element)trains.item(i);
Element directionElement = objStationDataElement.getElementsByTagName("Direction").item(0);
if(directionElement.getTextContent().trim().equals("Northbound")){
Element destinationElement = (Element)objStationDataElement.getElementsByTagName("Destination").item(0);
System.out.println(destinationElement.getTextContent().trim());
}
}