3

我想使用SimpleXML序列化一个列表,这样我可以稍后再反序列化它。我需要保留元素的顺序,或者每次我序列化它时至少达到相同的顺序,这样我就可以对它进行排序,就像保存反序列表一样。如何在使用SimpleXML序列化时保存列表中元素的顺序?

顺序非常重要,因为它是用于在地图上绘制路径的地理点列表,以及实际移动的路径。如果不保持秩序,这条道路将毫无意义。

我不需要使用SimpleXML,但我已经使用它来反序列化其他东西,并且除了保存顺序之外的所有东西都已经有效,所以我想避免学习使用另一个序列化程序执行此操作的开销。此外,SimpleXML可以与Android 2.3.3一起使用,这是必须的,因为这是针对Android应用程序的。我知道关于Android自带的解析器和序列化程序,我实际上使用了解析器,但是我没有对序列化程序做任何事情,所以如果有一种简单的方法用SimpleXML实现我所需要的。

请注意,我说的是在列表保留顺序的元素,不是一类,对其中有一个标签,且其内容似乎是比我的一个相当普遍的问题。

问候

+0

它不会自动保存它们吗? – xdhmoore

回答

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> 
-2

使用org.simpleframework.xml.Order注释,在这里您可以指定元素和属性的顺序。

相关问题