提出赏金作为唯一的答案并没有为 Android 提供良好的实现。是否有更快的实现与 Android 兼容?还是 SimpleXML 是我将获得的最佳性能?
我对 Java 和 Android 开发相当陌生,所以不知道将 xml 字符串反序列化为对象的正确过程。我找到了一种适用于的方法:
public static Object deserializeXMLToObject(String xmlFile,Object objClass) throws Exception
{
try
{
InputStream stream = new ByteArrayInputStream(xmlFile.getBytes("UTF-8"));
Serializer serializer = new Persister();
objClass = serializer.read(objClass, stream);
return objClass;
}
catch (Exception e)
{
return e;
}
}
xmlFile
(错误命名的)xml 字符串在哪里,并且objClass
是我要反序列化到的类的空类。这通常是其他对象的列表。
示例类:
@Root(name="DepartmentList")
public class DepartmentList {
@ElementList(entry="Department", inline=true)
public List<Department> DepartmentList =new ArrayList<Department>();
public boolean FinishedPopulating = false;
}
部门类:
public class Department {
@Element(name="DeptID")
private String _DeptID ="";
public String DeptID()
{
return _DeptID;
}
public void DeptID(String Value)
{
_DeptID = Value;
}
@Element(name="DeptDescription")
private String _DeptDescription ="";
public String DeptDescription()
{
return _DeptDescription;
}
public void DeptDescription(String Value)
{
_DeptDescription = Value;
}
}
示例 XML:
<DepartmentList>
<Department>
<DeptID>525</DeptID>
<DeptDescription>Dept 1</DeptDescription>
</Department>
<Department>
<DeptID>382</DeptID>
<DeptDescription>Dept 2</DeptDescription>
</Department>
</DepartmentList>
这在整个应用程序中运行良好,但我已经到了需要反序列化列表中 >300 个对象的地步。这仅需要大约 5 秒,或者在调试时接近一分钟,但用户对这种性能并不满意,并且在不需要调试时浪费了时间。有什么办法可以加快这个速度吗?还是我应该这样做的另一种方式?最好只通过改变deserializeXMLToObject
方法。