2015-06-05 36 views
1

我想增加文件版本。我已经宣布的10静态变量,我想它的值从10到11,12,13 .....每次当您单击保存文件增量返回null与静态变量

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(); 
} 

当我调试它显示增量,但是,在读到下面这段代码。它打破了第二行,它成为空,当我推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(); 
} 

回答

0

你错过在VesrionInc()方法的文件加载。

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"); 
... 

我希望我帮你