我有我需要用XmlSerializer反序列化的xml(我無法控制)。我的麻煩是我需要在一個列表中保存兩個不同標籤之間的順序。讓我舉一個例子:Xml反序列化,在不同標籤間執行命令
<users>
<luser>..some more elements..</luser>
<luser>..some more elements..</luser>
<admin>..different elements than in luser</admin>
<luser>..some more elements..</luser>
<admin>..different elements than in luser</admin>
<luser>..some more elements..</luser>
<admin>..different elements than in luser</admin>
<users>
現在,如果我deserialze這個直接的方式,我結束了兩個列表,一個用於LUSERS,一個用於管理員。但是,它們出現的順序是隱式ID! (當然應該已經在XML屬性或元素,但可惜它不是)
我試圖做一個meta元素這樣
[XmlElement("luser"),XmlElement("admin")]
public List<Person> Person { get; set; }
與
public class Person
{
public Luser Luser { get; set; }
public Admin Admin { get; set; }
}
計劃是檢查列表以查看是否輸入luser或管理員,並讓人員包裝維護元素的順序。但是,單個屬性上的多個XmlElement屬性似乎是非法的。
另一個可以接受的解決方案是最終得到兩個列表,但每個列表中的每個條目都有一個我可以用來獲取原始順序的ID。
我希望這個儘可能乾淨。之後搜索xml以查找訂單,手動提取標籤以及類似內容,這是我會避免的,並且是最後一招。
我知道它並不能真正幫助你,但它似乎很愚蠢,你需要讓它們保持秩序。顯然似乎沒有任何模式來規定這種安排。你爲什麼不能讓所有的用戶跟隨所有的管理員?這是你的系統強加的約束,還是其他一方要求你不要改變列表?也看看這個,它可能會給你一些想法:http://stackoverflow.com/questions/1007626/in-net-xml-deserialization-how-can-i-allow-polymorphic-use-of-array-類型 – Thomas 2012-04-26 14:50:10
第一個條目(用戶或管理員)是id 1,下一個是id 2(無論是用戶還是管理員)等等。是的,這很愚蠢,但我無能爲力。我會查看鏈接,謝謝 – Toodleey 2012-04-26 15:16:19
Ew,userIds是基於XML文檔中的位置?這太可怕了。我想這是不可能的,以使得userId是一個屬性? – Thomas 2012-04-26 15:19:59