2015-03-02 26 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

相关问题