Modificare un attributo in un file xml

giovedì 31 agosto 2006 - 10.41

Gemini Profilo | Expert

Ciao a tutti
come posso modificare un atributo di un nodo in un file xml?
Ho provato con:
figlio..Attributes["titolo"]="bambino";
ma mi da questo errore quando compilo:
Impossibile assegnare un valore alla proprietà o all'indicizzatore 'System.Xml.XmlAttributeCollection.this[string]' perché è in sola lettura.
Come posso fare?
Grazie mille

Gemini Profilo | Expert

Grazie mille per l'aiuto

ho scritto questo codice per aggiornare gli attributi:

//Aggiornamento del nodo
file_xml=Server.MapPath(cs.FileXmlAdmin);

XmlDocument doc = new XmlDocument();
doc.Load(file_xml);

XmlNode nodo = doc.DocumentElement.SelectSingleNode("elenco[@categorie='" + categoria + "']");

if (nodo.HasChildNodes)
{
XmlNode figlio = nodo.SelectSingleNode("id[@titolo='" + lblTitolo.Text + "']");

figlio.Attributes["anteprima"].Value = categoria + "-" + lblOperaId.Text + estensione_file;
figlio.Attributes["titolo"].Value = txtTitolo.Text.Trim();
figlio.Attributes["data_cr"].Value = txtData.Text.Trim();
figlio.Attributes["altezza"].Value = txtAltezza.Text.Trim();
figlio.Attributes["larghezza"].Value = txtLarghezza.Text.Trim();
figlio.Attributes["tecnica"].Value = txtTecnica.Text.Trim();
nodo.AppendChild(figlio);

doc.Save(file_xml);
}

quando apro la pagina ricevo questo messaggio di errore:

Riferimento a un oggetto non impostato su un'istanza di oggetto.
Descrizione: Eccezione non gestita durante l'esecuzione della richiesta Web corrente. Per ulteriori informazioni sull'errore e sul suo punto di origine nel codice, vedere l'analisi dello stack.

Dettagli eccezione: System.NullReferenceException: Riferimento a un oggetto non impostato su un'istanza di oggetto.

Errore nel codice sorgente:

Durante l'esecuzione della richiesta Web corrente è stata generata un'eccezione non gestita. Per informazioni sull'origine e la posizione dell'eccezione, vedere l'analisi dello stack dell'eccezione riportata di seguito.

Analisi dello stack:


[NullReferenceException: Riferimento a un oggetto non impostato su un'istanza di oggetto.]
gadirsrl.Administrator.Opere.Opere.UpdateOpera(QuerySystem qs)
gadirsrl.Administrator.Opere.Opere.btnSave_Click(Object sender, ImageClickEventArgs e)
System.Web.UI.WebControls.ImageButton.OnClick(ImageClickEventArgs e) +109
System.Web.UI.WebControls.ImageButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +69
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain() +1292

Ho controllato è l'errore dipendete da Attributes.
come posso fare?
Grazie mille

Gemini Profilo | Expert

Grazie mille
ora funziona tutto.
Però c'è un piccolo problema.
il mio file xml ha la seguente struttura:

<gallery>
<elenco cat="1">
<id foto="foto1" />
</elenco>
</gallery>

se elenco ha un figlio mi permette di inserire altri figli, se eleco non ha figli non inserisce il nodo figlio ad elenco.
Perchè?
Grazie mille

Gemini Profilo | Expert

Ciao
utilizzo lo stesso codice per inserire i nodi.
Ora non ricordo bene se bisogna utilizzare del codice differente quando si inserisce il primo figlio di un nodo.

Gemini Profilo | Expert

Grazie mille per il tuo aiuto
E' un mio errore.
Ho scritto:
if (nodo.HasChildNodes) invece di (if nodo!=null)
Ancora grazie
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5