108 messaggi dal 09 novembre 2005
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
nuovo_valore

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>
[....]
108 messaggi dal 09 novembre 2005
Mi sono risposto da solo
var currentSetting = from cs in setting.Descendants("value")
                     select cs;
if (currentSetting.Count() == 1)
  currentSetting.First().SetValue(string.Format(@"{0}", machineType));
259 messaggi dal 17 settembre 2006
Stai settando il value dell'elemento "Setting", mentre dovresti aggiungere un nuovo xelement di nome "Value" e settare il suo valore

http://www.hookedonlinq.com/LINQtoXML5MinuteOverview.ashx

un url trovata al volo
Modificato da Gionet il 05 gennaio 2012 14.34 -
108 messaggi dal 09 novembre 2005
si esatti infatti cercando i discendenti di un setting, trovo l'unico figlio <value>. E' il "value" di questo tag che voglio aggiornare, in questo modo ho risolto il mio problema.

Grazie cmq del supporto. :-)

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC