1
我仍在試驗SimpleXML框架。作爲第一步,我解析較大的XML文件,然後立即再次發射它作爲XML,即我的測試程序,到目前爲止是這樣的:如何使用SimpleXML框架強制執行特定的序列化順序?
Persister serializer = new Persister(new TypeMatcher());
File source = new File(filenameIn);
List myList = serializer.read(List.class, source);
serializer.write(myList, outfile);
這工作都很好,不過,我注意到的是,這列表的字段以錯誤的順序發出!
,我的名單必須遵循的模式如下:
<xs:element name="list">
<xs:complexType>
<xs:sequence>
<xs:element name="properties" type="Properties" maxOccurs="1" minOccurs="1" />
<xs:element name="columns" type="Columns" maxOccurs="unbounded" minOccurs="1" />
<xs:element name="items" type="Items" maxOccurs="unbounded" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
當列表被寫入,但是,我得到的順序是:
<list>
<items>
...
</items>
<properties ...>
...
</properties>
<columns>
...
</columns>
</list>
即項目,這應該是來最後,首先發射。這會在稍後再次讀取時導致錯誤,因爲這些項引用了在列中定義的數據,如果該順序未被維護,那麼這些數據仍然是未定義的。
M.
「此外,Java列表通常不保證順序」。呃,從什麼時候開始? – Dogcat
@Dogcat,感謝您的支持;這個陳述並不明顯是關於簡單框架序列化而不是Java本身。現在編輯的答案提到了這一點。 – zeiky
啊,對不起:D你的話對我有一個奇怪的影響:我花了3個小時刷新了我對Java Collections的知識,試圖理解你的意思。 – Dogcat