检查空XML文件并解决错误消息

时间:2013-08-21 06:29:07

标签: java xml

我刚刚开始学习如何加载XML文件并使用它们来创建一些对象昨天,所以我遇到了一些我没有的东西,大约15分钟左右的时间环顾四周,能够弄清楚所以我决定尝试在这里问他们。

DBLoader:https://github.com/Valkryst/Project_02/blob/master/src/main/java/valkryst/item/DBLoader.java#L93

XMLPARSE:
https://github.com/Valkryst/Project_02/tree/master/src/main/java/valkryst/core/xml

DBLoader类是我从XML文件加载所有变量并根据一些事情创建Armor或Weapon对象的地方。 XMLParse类只是为了保存一些我在使用XML文件时经常需要的方法。

现在谈谈我的两个问题......

  • 我如何在DBLoader类中设置我的代码的方式,检查是否除了“body”和“/ body”之外没有其他元素。 ? (将引号替换为>和<。)

    • 如何在加载空文件时解决错误“[致命错误]:1:1文件过早结束”?我已经包含了一个try-catch块来跳过它被捕获后的for循环的当前迭代。 (如果我的第一个问题得到解决,这可能会得到解决。)

我确实有更多的问题,但这是在凌晨4点左右,所以我有点不合适,我会把它放在我最重要的两个问题上。

感谢您的回复。

编辑:刚出现的另一个错误,我似乎无法在疲惫的心态中弄明白,所以我只是将它添加到这篇文章中,以防万一有人在帮我解决我的主要问题时看到问题。< / p>

运行DBLoader时,由于某种原因,它似乎总是跳过“/XML/Items/Armor/Boot.xml”。我已经添加了一个print语句来告诉我文件何时成功加载,但只有“/XML/Items/Armor/Sword.xml”成功完成。它们是我的两个测试XML文件,因此只有它们才能成功加载。对不起,如果听起来很奇怪,我就睡着了。

1 个答案:

答案 0 :(得分:0)

嗯,不知道这是不是最好的方式,但它确实有效。这进入你的for循环。

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

   File f = new File(paths[i]);
   FileReader fr = new FileReader(f);
   if (fr.read()==-1){
       //file is empty
   }
   else{

        doc= dBuilder.parse(f);
        int n = rankdoc.getChildNodes().getChildNodes().getLength(); 
        // if n > 0, there's something else besides your root element

   }
   fr.close();