学習課題として、単純なサーバー 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 関数の調査を行いましたが、見落としているものを見つけることができないようです。