我想增加文件版本。我已经声明了一个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();
}
答案 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");
...
我希望我能帮到你