ciao a tutti,
mi trovo in questa situazione, leggo un file xml ottengo la struttura e dovrei aggiornare alcuni valori. Li aggiorno e salvo il file XML.
Tutto normale tranne che i valori salvati sono cambiati, il formato
<value>nuovo_valore</value>
è diventato
tenendo conto che tutto questo è all'interno di una DLL utilizzata come CustomAction di un pacchetto di installazione, sto tenstando la cosa con un project console.
Lo salva correttamente ma il config, non è più correttamente leggibile.
Come posso mantenere il tag <value> ?
string programPath = @"C:\Program Files (x86)\MyService\";
string configFile = "MyService.exe.config";
string machineType = "MACHINE1";
string serialPort = "COM2";
string configuration = programPath + configFile;
XDocument _config = XDocument.Load(configuration);
var settings = from s in _config.Descendants("setting")
where s.Attribute("name").Value == "MachineType" || s.Attribute("name").Value == "SerialPort"
select s;
foreach (var setting in settings)
{
switch (setting.Attribute("name").Value)
{
case "MachineType":
setting.SetValue(string.Format(@"{0}", machineType));
break;
case "SerialPort":
setting.SetValue(string.Format(@"{0}", serialPort));
break;
}
}
_config.Save(configuration);
PRIMA
[...]
<setting name="MachineType" serializeAs="String">
<value>MACHINE1</value>
</setting>
<setting name="SerialPort" serializeAs="String">
<value>COM2</value>
</setting>
[....]
DOPO
[...]
<setting name="MachineType" serializeAs="String">MACHINE1</setting>
<setting name="SerialPort" serializeAs="String">COM2</setting>
[....]