将XML文件作为资源加载

时间:2015-05-19 19:00:05

标签: java xml netbeans

我正在编写一个使用xml文件来存储统计数据的游戏。我正在尝试构建一个将为统计信息加载xml数据模板的类,我希望这是一个资源,但是我遇到了一个问题,它会说文件为空(java.lang.NullPointerException)< / p>

我的问题是,我做错了什么,我是否正确设置文件作为资源?

代码:

public XMLFileReader(String Item_Name) {

    URL test = this.getClass().getResource("Reasource/Example.txt");

    System.out.print(test.getPath());

    try {
        URL is = this.getClass().getResource("Reasources/" + Item_Name);

        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
        Document doc = dBuilder.parse(is.getFile());

        doc.getDocumentElement().normalize();

        System.out.println("Root element :" + doc.getDocumentElement().getNodeName());

        NodeList nList = doc.getElementsByTagName("staff");

        System.out.println("----------------------------");

        for (int temp = 0; temp < nList.getLength(); temp++) {

            Node nNode = nList.item(temp);

            System.out.println("\nCurrent Element :" + nNode.getNodeName());

            if (nNode.getNodeType() == Node.ELEMENT_NODE) {

                Element eElement = (Element) nNode;

                System.out.println("Staff id : " + eElement.getAttribute("id"));
                System.out.println("First Name : " + eElement.getElementsByTagName("firstname").item(0).getTextContent());
                System.out.println("Last Name : " + eElement.getElementsByTagName("lastname").item(0).getTextContent());
                System.out.println("Nick Name : " + eElement.getElementsByTagName("nickname").item(0).getTextContent());
                System.out.println("Salary : " + eElement.getElementsByTagName("salary").item(0).getTextContent());
            }
        }
    }
}
public static void main(String[] args){
    new XMLFileReader("Example.xml");
}

文件结构:

 Main Project
 |
 |-Reasources
 |      |
 |      |-Example.txt
 |
 |-XMlTest
     |
     |-XmlFileReader

错误

java.lang.NullPointerException
at Utils.File_Utils.XMLFileReader.<init>(XMLFileReader.java:32)
at Utils.File_Utils.XMLFileReader.main(XMLFileReader.java:68)

第32和68行

Document doc = dBuilder.parse(is.getFile());

 new XMLFileReader("Example.xml");

1 个答案:

答案 0 :(得分:1)

确保Resources\Example.txt文件位于classpath.

如果您从cmd行开始运行,那么

java -cp Resources\Example.txt YourClassFile

并且您正在使用绝对类路径,而是使用相对路径,如/Resources or ./Resources