唯一の答えは 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 秒しかかからず、デバッグ時には 1 分近くかかりますが、ユーザーはそのパフォーマンスに不満を持っており、デバッグが望ましくない場合に無駄な時間が費やされます。これをスピードアップする方法はありますか?または、これを行うべき別の方法はありますか?できればdeserializeXMLToObject
方法を変更するだけです。