私はこのコードを持っています
XElement newClient= new XElement("Client",
new XElement("Name", cmbClient.Text),
new XElement("Service",
new XElement("ServName", cmbService.Text)));
xmlDoc.Add(newClient);
xmlDoc.Save("Settings.xml");
これを作成します
<?xml version="1.0" encoding="utf-8"?>
<Clients>
<Client>
<Name>Client Name</Name>
<Services>
<ServName>Service Name</ServName>
</Services>
</Client>
</Clients>
Button1をもう一度押すと、別のクライアントセクションが作成されます。これで問題ありませんが、必要なのは次のとおりです。
- 存在しない場合は、新しいクライアントセクションを作成します。
- クライアントが存在する場合は、既存のものを置き換えるのではなく、ServNameをクライアントに追加します。
- サービスがクライアントにすでに存在する場合は、すでに存在するため、何もしません。
どんな手掛かり?linq to xmlから始めています...アドバイスに感謝します!
編集:DmitryDovgopolyとLeonNewswangerからのミックスインの回答によって提供されるソリューションは2人に感謝します!:D
XDocument xDoc = XDocument.Load("Settings.xml");
var Clients =
from client in xDoc.Root.Elements("Client")
where client.Element("Name").Value == cmbClient.Text
select client;
if (Clients.Count() > 0)
{
var Client =
(from client in xDoc.Root.Elements("Client")
where client.Element("Name").Value == cmbClient.Text
select client).Single();
if (Client.Element("Services").Elements().Count(el => el.Value == cmbService.Text) == 0)
{
Client.Element("Services").Add(new XElement("ServName", cmbService.Text));
}
}
else
{
XElement newClient = new XElement("Client",
new XElement("Name", cmbClient.Text),
new XElement("Services",
new XElement("ServName", cmbService.Text)));
xDoc.Root.Add(newClient);
}
xDoc.Save("Settings.xml");