3

後で再度逆シリアル化できるように、SimpleXML を使用してリストをシリアル化したい。要素の順序を保持するか、少なくともシリアル化するたびに同じ順序を達成する必要があるため、並べ替えることができます。たとえば、逆シリアル化されたリストを予約するだけです。

順序は、マップ上にパスを描画するために使用されるジオポイントのリストであり、実際に移動するパスであるため重要です。順序を維持しないと、パスはまったく意味がありません。

SimpleXML を使用する必要はありませんが、他のものを逆シリアル化するために既に使用しており、順序を維持すること以外はすべて既に機能しているため、別のシリアライザーでこれを行うことを学ぶオーバーヘッドを避けたいと思います。また、SimpleXML は Android 2.3.3 で動作しますが、これは Android アプリ用であるため必須です。

Androidに付属のパーサーとシリアライザーについては知っています。実際にパーサーを使用していますが、まだシリアライザーで何もしていないので、必要なものを達成する簡単な方法があれば、かなりのオーバーヘッドになりますSimpleXML を使用します。

タグがあるクラスの要素ではなく、リスト内の要素の順序を維持することについて話していることに注意してください。これは、私のものと比較して非常に一般的な問題のようです。

よろしく

4

2 に答える 2

2

@ElementList次の例でわかるように、注文は保持されます ( で注釈を付ける必要があるだけです):

import java.util.Arrays;
import java.util.List;

import org.simpleframework.xml.ElementList;
import org.simpleframework.xml.Root;
import org.simpleframework.xml.core.Persister;

public class SimpleXMLTest {

    public static void main(final String[] args) throws Exception {
        Persister persister = new Persister();

        ModelClass model = new ModelClass(Arrays.asList("Item1", "Item2", "Item3"));

        persister.write(model, System.out);
    }
}

@Root
class ModelClass {

    @ElementList
    private List<String> list;

    public ModelClass() {
    }

    public ModelClass(final List<String> list) {
        super();
        this.list = list;
    }

    public List<String> getList() {
        return list;
    }

}

出力は次のようになります。

<modelClass>
   <list class="java.util.Arrays$ArrayList">
      <string>Item1</string>
      <string>Item2</string>
      <string>Item3</string>
   </list>
</modelClass>
于 2012-06-23T21:00:43.517 に答える
-2

org.simpleframework.xml.Order アノテーションを使用します。ここで、要素と属性の順序を指定できます。

于 2012-11-10T14:00:34.093 に答える