2015-03-02 32 views
1

我有一個XML文件,我想在每次用戶單擊btnNewfile時增加版本號。如何自動增加xml文件的版本

它必須從1000開始並增加到1。我也困惑於哪個版本必須增加或者兩者兼而有之。問題是當我嘗試調試時出現此格式的錯誤格式:

Input string was not in a correct format.

如何增加它?

XML:

<resheader name="version"> 
<value>2.0</value> 
</resheader> 

我曾嘗試:

private void btnNewfile_Click(object sender, EventArgs e) 
{ 

    int current = 1000; 
    current++; 
    var versionNumber = doc.Descendants("value").FirstOrDefault(); 
    current = (int)versionNumber; 
    versionNumber.SetValue(current + 1); //error here;Input string was not in a correct format. 
    lbl_Output_Version.Text = versionNumber.ToString(); 
} 

的問題來到這裏,因爲我有兩個:

<resheader name="resmimetype">text/microsoft-resx</resheader> 
<resheader name="version">2.0</resheader> // i only want to update this one 

當我調試它越來越第一個與"text/microsoft-resx"和它在第二次拋出錯誤在。

+0

輸入字符串格式不正確。 – 2015-03-02 08:13:41

+0

看到我更新的問題 – 2015-03-02 08:18:11

回答

1

使用decimal而不是int,因爲您的字符串包含.0。您還需要獲取Value,而不是要轉換的整個元素。您也可以使用Where來選擇所需的確切項目。

XElement versionNumber = doc.Descendants("resheader") 
          .Where(x => x.Attribute("name").Value == "version") 
          .Descendants("value") 
          .First(); 

decimal current = Convert.ToDecimal(versionNumber.Value, CultureInfo.InvariantCulture); 

versionNumber.SetValue(Math.Max(1000, current + 1)); 

既然你想在1000開始,我添加了一個Math.Max

+0

讓我試試,我會盡快給你回覆 – 2015-03-02 08:23:51

+0

這是從這一個得到的值 text/microsoft-resx它會拋出incorect字符串格式的錯誤 – 2015-03-02 08:28:16

+0

@ITForward:我更新了答案。 – 2015-03-02 08:30:58

相關問題