作为学习练习,我正在构建一个简单的服务器 IP 存储和 ping 监控应用程序。应用程序从 xml 文件中读取服务器/主机列表,并将它们显示给用户,并允许他们通过 ping 命令检查其在线状态。
读取和 ping 功能工作正常,但在编写代码以添加额外的服务器实例时,代码不会将新元素保存到 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 函数,但我似乎看不出我错过了什么。