无法从XML文件加载

时间:2014-11-02 16:50:06

标签: java xml

我有一个重大问题。我们可以将此应用程序称为“船俱乐部系统”,并在UML课程中进行分配。但是真正困扰我的问题是我无法将“成员”对象加载回导出和导入对象时使用的Arraylist。

我的朋友得到了一些帮助,但导入不起作用。 这是我尝试导入时遇到的错误。

Exception in thread "main" java.lang.NullPointerException
at boat.Controller.SystemController.readFromSystem(SystemController.java:288)
at boat.Controller.SystemController.<init>(SystemController.java:26)
at boat.View.Console.<init>(Console.java:17)
at BoatMain.main(BoatMain.java:22)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)

这个特定的问题指出了问题:

member.setMemberId(Integer.parseInt(element.get(i).getAttribute("memberId").getValue()));

整个应用程序的链接。 https://github.com/mjuu/boat/tree/master/src

System控制器类看起来像这样。 顺便说一下,我正在考虑将这个类拆分为更像系统控制器和成员控制器,以实现更高的内聚/低耦合设计。但只有当我让导入工作正常时...

我不知道为什么它不起作用。成员id首先是INTEGER,但是在导出时它转换为String。导入时,它再次转换为Int。所以我想知道那里有什么问题......

非常感谢帮助,所以我可以继续。 系统控制器

public void readFromSystem () {

    File file = null;
    Builder builder = null;
    Document doc = null;

    try {

        file = new File(filePath);
        builder = new Builder();
        doc = builder.build(file);

        Element root = doc.getRootElement();

        Elements members = root.getChildElements();


        for (int i = 0; i < members.size(); i++) {

            Elements element = members.get(i).getChildElements();
            Member member = new Member();

            member.setMemberId(Integer.parseInt(element.get(i).getAttribute("memberId").getValue()));
            member.setPersonId(element.get(0).getValue());
            member.setName(element.get(1).getValue());

            memberList.add(member);

            if (members.get(i).getChildElements().size() == 3) {

                Elements boats = element.get(2).getChildElements();

                for (int j = 0; j < boats.size(); j++) {

                    Boat b = new Boat();

                    b.setBoatId(Integer.parseInt(boats.get(j).getAttribute("boatId").getValue()));
                    b.setBoatType(Integer.parseInt(boats.get(j).getChildElements().get(1).getValue()));
                    b.setBoatLength(boats.get(j).getChildElements().get(2).getValue());

                }
            }
        }
    } catch (IOException e) {
        System.out.print("Could not read from the system");
    } catch (nu.xom.ParsingException e) {
        System.out.print("Parsing was unsuccessful!");
    } 
}

0 个答案:

没有答案