【发布时间】:2015-04-26 08:38:49
【问题描述】:
我目前正在构建一个 android 应用程序,并决定使用 Xml 实现而不是数据库来存储数据。 我在应用程序启动时将 xml 文件加载到列表中,当我想将其保存回来时,我使用 XmlSerializer 将其格式化为 xml,然后输出到 StringWriter。 然后我在 StringWriter 对象上调用 .toString() 并将该字符串写回文件中。
然而,我注意到应用程序 xml 文件增长得非常快,并且想知道如果它的长度超过最大字符串长度会发生什么。 有没有办法从 StringWriter 获取字符串数组? 这是我的序列化器方法。
public String articlesAsXml() {
XmlSerializer serializer = Xml.newSerializer();
StringWriter writer = new StringWriter();
try {
serializer.setOutput(writer);
serializer.startDocument("UTF-8", true);
serializer.startTag("", "articles");
for (Articles art: AllArticles){
serializer.startTag("", "art");
serializer.startTag("", "id");
serializer.text(art.Article_Id);
serializer.endTag("", "id");
serializer.startTag("", "title");
serializer.text(art.Article_Title);
serializer.endTag("", "title");
serializer.startTag("", "body");
serializer.text(art.Article_Body);
serializer.endTag("", "body");
serializer.endTag("", "art");
}
serializer.endTag("", "articles");
serializer.endDocument();
return writer.toString();
}
catch (Exception e) { return "Failed"; }
return null;
}
提前致谢
【问题讨论】:
-
不确定您是否欢迎对设计提出批评,但如果您担心 XML 的大小超过字符串的最大长度,您必须想象应用程序的性能随着时间的推移会显着退化。牢记解析/内存使用情况,您很快就会遇到麻烦。我会考虑使用数据库,或者至少将 XML 拆分为多个文件。关于您的问题,这可能会提供一些见解stackoverflow.com/questions/816142/…
-
是的,我当然欢迎批评。我是来学习的。我唯一的问题是我之前没有意识到这个问题,所以我构建了我的整个应用程序依赖于这个系统,因为它必须从文章中加载其他东西。非常感谢您的回答 :) 所以我认为最好的移动方式是为我的应用程序的第一个版本实施 Natixs 解决方案,然后开始使用其他版本的数据库。
标签: java android xml tostring xmlserializer