Java XML读取器错误
运行XML读取器的开头时出现错误:Java XML读取器错误,java,xml,xmlreader,datareader,Java,Xml,Xmlreader,Datareader,运行XML读取器的开头时出现错误: public static void main(String[] args) { System.out.println("XML Reader"); try { DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = docFactory.newDocu
public static void main(String[] args)
{
System.out.println("XML Reader");
try
{
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.parse("database.xml");
//normalize text
doc.getDocumentElement().normalize();
System.out.println("The root of this doc is "+doc.getDocumentElement().getNodeName());
NodeList listOfAddresses = doc.getElementsByTagName("address");
int totalAddresses = listOfAddresses.getLength();
System.out.println(totalAddresses+" addresses in "+ doc.getDocumentElement().getNodeName());
//main loop
for(int i = 0; i<listOfAddresses.getLength(); i++)
{
Node items = listOfAddresses.item(i);
if(items.getNodeType() == Node.ELEMENT_NODE)
{
System.out.println("Address #"+i);
Element element = (Element)items;
NodeList nameList = element.getElementsByTagName("name");
Element nameElement = (Element)nameList.item(0);
NodeList nameOutput = nameElement.getChildNodes();
System.out.println("name: "+nameElement);
}
}
}
catch(SAXParseException err)
{
System.out.println("Sax Parse Exception error on line "+err.getLineNumber());
}
catch(SAXException e)
{
System.out.println("SAX Exception error");
Exception x = e.getException();
((x == null) ? e : x).printStackTrace();
}
catch(Throwable t)
{
System.out.println("Trowable error");
t.printStackTrace();
}
}
publicstaticvoidmain(字符串[]args)
{
System.out.println(“XML读取器”);
尝试
{
DocumentBuilderFactory docFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder=docFactory.newDocumentBuilder();
documentdoc=docBuilder.parse(“database.xml”);
//规范化文本
doc.getDocumentElement().normalize();
System.out.println(“此文档的根是”+doc.getDocumentElement().getNodeName());
NodeList listOfAddresses=doc.getElementsByTagName(“地址”);
int totalAddresses=listOfAddresses.getLength();
System.out.println(totalAddresses+“+doc.getDocumentElement().getNodeName()中的”地址);
//主回路
对于(int i=0;i您没有检查是否存在元素0。本质上,如果索引无效,.item()将返回null,因此可能没有索引为0的项返回null,然后您尝试在null指针上调用getChildNodes()。因此您的NPE
您应该迭代节点列表中的元素
改变
Element nameElement = (Element)nameList.item(0);
到
for(int x=0;x
第42行是哪一行?了解这一点可能会对我们有所帮助。请始终在源代码中记录发生异常的那一行。
Element nameElement = (Element)nameList.item(0);
for(int x = 0; x < nameList.getLength(); x++) {
nameElement = nameList.item(x);
NodeList nameOutput = nameElement.getChildNodes();
System.out.println("name: "+nameElement);
}