2011-02-24 17 views
2

標籤列表我有2類:序列化對象到XML得到的命名爲喜歡的字段值

public class LocalizationEntry 
{ 
    public List<TranslationPair> Translations 
    { 
     get; 
     set; 
    } 
} 

public class TranslationPair 
{ 
    public string Language 
    { 
     get; 
     set; 
    } 

    public string Translation 
    { 
     get; 
     set; 
    } 
} 

是否可以使用標準的串行得到這樣一個XML?

<LocalizationEntry> 
    <Translations> 
     <EN>apple<EN> 
     <PL>jabłko<PL> 
     <DE>apfel<DE> 
    </Translations> 
</LocalizationEntry> 

我在思考着什麼樣XmlArrayItem(ElementName=this.Language)屬性,但當然這種結構是不能在運行時確定該屬性值除了非法的。

感謝您的任何幫助。當然,我可以使用其他結構,但我很好奇是否有可能。

回答

5

定製元素名稱是一件痛苦的事情;我會在這裏忘記XmlSerializer,因爲你必須使用IXmlSerializable,這是一種皇室的痛苦。我會使用的XElement而不是:

var source = new LocalizationEntry { 
    Translations = new List<TranslationPair> { 
     new TranslationPair {Language="EN", Translation="apple"}, 
     new TranslationPair {Language="PL", Translation="jabłko"}, 
     new TranslationPair {Language="DE", Translation="apfel"}, 
    } 
}; 

var el = new XElement("LocalizationEntry", 
    new XElement("Translations", 
     from pair in source.Translations 
     select new XElement(pair.Language, pair.Translation))); 

var xml = el.ToString(); 
+0

+1同意IXmlSerializable的是,當你可以使用更簡潔的方法皇家疼痛命名(EN/PL/DE) – sloth 2011-02-24 09:35:52

0

enter link description here使用.NET Framework中的

的XmlSerializer對象記得把Serializable屬性的類名

點擊此鏈接,我不能工作,如何添加URL對不起

的名稱
+0

你不能讓每個元素通過這條路線 – 2011-02-24 09:16:09