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 回答