如何自动增加xml文件版本

时间:2015-03-02 08:04:45

标签: c# .net xml linq linq-to-xml

我有一个XML文件,我想在每次用户点击btnNewfile时增加版本号。

必须从1000开始,然后增加到1。我也很困惑哪个版本必须增加或两者兼而有之。问题是当我尝试调试时的格式我得到了这个错误:

  

输入字符串的格式不正确。

如何增加它?

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"获取第一个,并在此之后抛出错误。

1 个答案:

答案 0 :(得分: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