Это довольно запутанный код; Я предполагаю, что xmlElement
- это элемент <dependancy name='Microsoft Windows NT'/>
, который вы создали в другом месте.
//
в выражениях XPath ищет все элементы, поэтому //dependancies//dependancy[@name='Microsoft Windows NT']
совпадает с //dependancy[@name='Microsoft Windows NT']
. Предполагая, что уже есть хотя бы один элемент <dependancy .../>
, тогда
list[found - 1].AppendChild(foundNode);
Вставит ваш xmlElement
как дочерний элемент в последний существующий элемент <dependancy .../>
; как это:
<dependancies>
<dependancy>
<dependancy name="Microsoft Windows NT" />
</dependancy>
</dependancies>
Это должно быть то, что у вас есть, иначе list[found - 1]
вылетит.
Проблема, с которой я сталкиваюсь, заключается в том, что изменения загружаются только при перезапуске приложения.
Это не правильно. У вас уже есть изменения в list[found - 1]
. Настоящая проблема в том, что вы не ищете:
foreach (XmlNode node in list)
Это ищет всех детей list
, а не детей list[found - 1]
. Я предполагаю, что вы хотите:
<dependancies>
<dependancy />
<dependancy name="Microsoft Windows NT" />
</dependancies>
Чтобы получить это, замените XmlNodeList list = xlDoc.SelectNodes("//dependancy");
на:
XmlNode dependancies = xlDoc.SelectSingleNode("//dependancies");
Заменить list[found - 1].AppendChild(foundNode)
на:
dependancies.AppendChild(foundNode)
А foreach (XmlNode node in list)
с:
foreach (XmlNode in dependancies.ChildNodes)
Если это не то, что вы хотите, уточните.
Причина, по которой вы получаете новое xmlElement
при повторном запуске программы, заключается в том, что xlDoc.SelectNodes("//dependancy")
ищет все узлы, включая узлы в <dependancy .../>
.
Кроме того, что означает "зависимость"? Вы имеете в виду "зависимость"? Неправильные орфографические ошибки очень, очень запутанные.