File Increment使用静态变量返回null

时间:2015-06-05 10:28:53

标签: c# winforms file

我想增加文件版本。我已经声明了一个10的静态变量,我希望每次单击保存时它从10增加到11,12,13 ......

XML文件:

<resheader name="version">
    <value>10</value>
</resheader>
<resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>

方式:

public void VesrionInc()
{
    lblversion.Visible = true;
    int updateversion = 1000;
    updateversion++;
    XmlDocument _doc = new XmlDocument();

    string xmlcontents = _doc.InnerXml;
    lblversion.Text = updateversion.ToString();

    XmlNode root = _doc.DocumentElement;
    XmlNode myNode = root.SelectSingleNode("descendant::resheader[@name = 'version']/value");
    myNode.InnerText = updateversion.ToString();
    lblversion.Text = updateversion.ToString();
}

当我调试它显示增量但是,当它读取下面的代码时。它在第二行中断,它变为null,当我按F5时,它说,对象引用未设置为对象的实例。

XmlNode root = _doc.DocumentElement;
XmlNode myNode =    root.SelectSingleNode("descendant::resheader[@name = 'version']/value"); //it breaks here
myNode.InnerText = updateversion.ToString();
lblversion.Text = updateversion.ToString();

保存按钮:

private void btnSave_Click_1(object sender, EventArgs e)
{
    int iversion = Convert.ToInt32(lblversion.Text.ToString());

    XmlDocument doc = new XmlDocument();
    doc.Load(outputFilePath);
    XmlNode root = doc.DocumentElement;
    XmlNodeList CnodesList = root.SelectNodes("descendant::data");


    XmlNode myNode = root.SelectSingleNode("descendant::resheader[@name = 'version']/value");
    //myNode.InnerText = iversion.ToString(lblversion.Text);
    myNode.InnerText = iversion.ToString();
    lblversion.Text = iversion.ToString();
}

2 个答案:

答案 0 :(得分:0)

您错过了VesrionInc()方法中的文档加载。

答案 1 :(得分:0)

您已声明XmlDocument _doc,但此文档为空。您必须通过方法

将任何数据插入到文档中

XmlDocument。加载() =来自文件,FileStream或XmlReader的数据:

_doc.Load("c:\\xmlsamle.xml");

XmlDocument。 LoadXml() =从字符串中插入xml结构:

_doc.LoadXml("<resheader name='version'><value>10</value></resheader>");

我希望上面的xml文件不完整。如果是这样,你在xml中有两个根元素,它也可能是一个问题。我推荐xml更正:

<resheader>
     <version>10</version>
     <reader>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</reader>
</resheader>

XPath将是:

...
XmlNode root = _doc.DocumentElement;
XmlNode myNode = root.SelectSingleNode("version");
...

我希望我能帮到你

相关问题