Android,simplexml serial.read 从空文件中读取问题

发布于 2024-11-07 20:19:59 字数 610 浏览 3 评论 0原文

根据此站点上的建议,我采用了 org.simpleframework.xml 中的 SimpleXML。 我使用此代码从磁盘上的文件反序列化我的类:

      try {
            myPoints = serial.read(Points.class, new File(getFilesDir(), "points.xml"));
            Log.i(TAG, "Number of Points: " + myPoints.getSize());
        } catch (FileNotFoundException e) {
            Log.d(TAG, "No data found!");
        } catch (Exception e) {
            Log.d(TAG, "Uncaught exception: ", e.getMessage());
        }

如果文件“points.xml”的内容不是合法的 xml(在我的情况下它是一个空文件),serial.read 会中断(Persister 中发生异常) .class,抱歉我没有 simplexml 源...)。 我应该事先检查 xml 一致性吗? 有人可以帮忙吗?

Following suggestions on this site, I have adopted SimpleXML from org.simpleframework.xml.
I use this code to deserialize my class from a file on disk:

      try {
            myPoints = serial.read(Points.class, new File(getFilesDir(), "points.xml"));
            Log.i(TAG, "Number of Points: " + myPoints.getSize());
        } catch (FileNotFoundException e) {
            Log.d(TAG, "No data found!");
        } catch (Exception e) {
            Log.d(TAG, "Uncaught exception: ", e.getMessage());
        }

In the event the contents of file "points.xml" is not legal xml (in my case it's an empty file), serial.read breaks (an exception occurs in Persister.class, sorry I don't have simplexml sources...).
Should I check for xml consistency beforehand?
Can anybody help?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

纵山崖 2024-11-14 20:19:59

无需事先验证,因为您将无法解决问题。只需确保它正常失败(正如您的代码似乎正在做的那样)。

但是,在发生反序列化错误时,您可能想查看文件是否为空。空文件可能不是问题,而格式错误的 XML 文件才是问题!

No need to validate before-hand since you won't be able to fix the problem. Just make sure it fails gracefully (as your code appears to be doing).

You may, however, want to see if the file is empty or not in the case of a deserialization error. An empty file is likely not a problem where as a malformed XML file is!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文