2015-06-05 3 views
1

Я хочу увеличить версию файла. Я объявил статическую переменную 10, и я хочу, чтобы увеличить с 10 до 11, 12, 13 ..... каждый раз при нажатии кнопки сохранитьFile Increment возвращает 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. Load() = данные из файла, 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"); 
... 

Я надеюсь, что я помог вам

Смежные вопросы