4

唯一の答えは 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方法を変更するだけです。

4

5 に答える 5

0

以前、SOAP Web サービスで同様の問題が発生しました。最後に、属性のノードを変換して、XML の形式を変更しました。

例:

<node>
  <attr1>value1</attr1>
  <attr2>value2</attr2>
  <attr3>value3</attr3>
  <attr4>value4</attr4>
</node>

に変身しました

<node attr1='value1'attr2='value2' attr3='value3' attr4='value4' />

理論的には最善の解決策ではないかもしれませんが、パフォーマンスの向上は本当に良かったです。XML がもう少し複雑な場合 (さまざまなレベルまたは複数レベルのリストで反復可能なノード)、物事は少し複雑になる可能性があります。

于 2013-05-08T07:51:57.827 に答える
-1

サーバー プロキシを使用して XML を JSON に変換する

于 2013-05-06T21:33:54.537 に答える