В качестве учебного упражнения я создаю простое приложение для хранения и хранения IP-адресов сервера. Приложение считывает список серверов/хостов из xml-файла и отображает их пользователю и позволяет им проверять их статус в Интернете.Невозможно сохранить изменения в xml-файле
Функция чтения и пинга работает нормально, но при написании кода для добавления дополнительного экземпляра сервера код не сохранит новый элемент в XML-файле.
Вот основная структура XML в serverlist.xml
:
<servers>
<server name="Operations">
<hostname>Operations</hostname>
<hostaddress>address</hostaddress>
</server>
<server name="Development">
<hostname>development</hostname>
<hostaddress>address</hostaddress>
</server>
</servers>
А вот код, который я использовал, чтобы добавить новый элемент server
:
private void btnAdd_Click(object sender, EventArgs e)
{
XDocument xDocument = new XDocument();
try
{
if (txtHostName.Text == "" || txtHostAddress.Text == "")
{
MessageBox.Show("Please complete the fields shown!", "Complete form", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
// Add element to XML
if (File.Exists("serverlist.xml"))
{
xDocument = XDocument.Load("serverlist.xml");
}
else
{
MessageBox.Show("No XML available!", "Error", MessageBoxButtons.OK);
}
XElement newServer = new XElement("server", txtServerName.Text,
new XElement("hostname", txtHostName.Text),
new XElement("hostaddress", txtHostAddress.Text));
xDocument.Root.Add(newServer);
xDocument.Save("Serverlist.xml");
MessageBox.Show("Server Added!", "Server Added", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
Я не вижу каких-либо ошибок или клаузулы catch, элемент просто не сохраняется в XML. Это, наверное, очень простая и глупая вещь, но я сделал много поисковых систем (другие поисковые системы доступны!) И исследование функций XML, но я не могу видеть, что я пропустил.
Спасибо, что Стив! Хотя это не совсем то решение, которое привело меня к разработке того, что было не так! Я случайно установил свойство «Копировать в выходной каталог» файла
serverlist.xml
как «Копировать всегда», а не «Копировать, если новый», поэтому каждый раз, когда я его создавал и отлаживал, он переписывал файл с новой, неотредактированной копией. Я внедрил пару изменений, которые вы предложили, чтобы сделать мой код лучше и функциональнее. – markhlong@markhlong - добро пожаловать! Рад, что смог помочь. –