Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java XML读取器错误_Java_Xml_Xmlreader_Datareader - Fatal编程技术网

Java 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

运行XML读取器的开头时出现错误:

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);
}