2013-10-29 39 views
0

我正在處理支持不同語言的XML文件,我想使用XDocument/XElement(使用System.Xml.Serialization)將此XML解析爲C#類。 XML稍微複雜,但我想要實現的應該很簡單,但我無法弄清楚。向XmlElement添加後綴C#解析器

BASIX XML例如:

<root> 
    <word_EN>Hello</word_EN> 
    <word_DE>Hallo</word_DE> 
    <word_FR>Bonjour</word_FR> 
<root> 

如何我希望我的解析器的樣子:

[XmlRoot("root")] 
public class Root 
{ 
    [XmlElement("word_" + LanguageSetting.SUFFIX)] 
    public string word { get; set; } 
} 

我想從另一個類的後綴,我希望能夠去改變它。我可以將後綴設置爲一個常量字符串,但後來我無法更改它。使用全局變量也不起作用。

static class LanguageSetting 
{ 
    private static string _suffix = "EN"; 
    public static string SUFFIX 
    { 
     get { return _suffix; } 
     set { _suffix = value; } 
    } 
} 

錯誤: 一個屬性參數必須是常量表達式,屬性參數類型

什麼是添加後綴的正確方法的typeof運算表達式或數組創建表達式?

回答

1

這樣做的正確方法是將您的語言後綴作爲word元素上的XML屬性,但這可能對您無效。

您正在收到此錯誤,因爲必須在屬性裝飾中使用編譯時間常量。 LanguageSetting.Suffix是靜態的,但不是一個常量。請嘗試使用const關鍵字。

在XML中,不同的標籤名稱代表不同的對象類型。對於您當前的XML文檔而言,最好的解決方案是您爲每種受支持的語言提供了獨立的類,這些類都從一個普通類繼承而來(例如,WordBase)。