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