Ciao, sto creando una applicazione windows in Visual Studio 2010 utilizzando C# .NET 4.0.
Per salvare i dati che posso aggiungere tramite un apposito form, ho deciso di utilizzare un file XML.
Per creare il file XML e la struttura non ho problemi, o per lo meno aggiungere un elemento coi relativi nodi riesco a farlo nel modo seguente:
Quindi per esempio aggiungento 3 elementi il file XML diventerebbe come segue:codice:XmlElement newelem = VarGlobal.xmldoc.CreateElement("db"); newelem.InnerXml = "<arg>" + textBox1.Text + "</arg>\n\t<ris>" + textBox2.Text + "</ris>"; newelem.AppendChild(VarGlobal.xmldoc.CreateWhitespace("\n")); VarGlobal.xmldoc.DocumentElement.AppendChild(newelem); VarGlobal.xmldoc.PreserveWhitespace = true; XmlTextWriter wrtr = new XmlTextWriter(Application.StartupPath + "\\db.xml", Encoding.UTF8); VarGlobal.xmldoc.WriteTo(wrtr); wrtr.Close();
Come spesso mi accade, purtroppo programmano mi sono accorto che la struttura così creata potrà essere semplificata raggruppando i vari elementi con lo stesso nodo <arg> sotto lo stesso elemento. Questa cosa già so come farla perchè è praticamente lo stesso metodo precedentemente postato.codice:<?xml version="1.0" encoding="utf-8" ?> <DataBase> <db> <arg>dato1</arg> <ris>dato2</ris> </db> <db> <arg>dato3</arg> <ris>dato4</ris> </db> <db> <arg>dato5</arg> <ris>dato6</ris> </db> </DataBase>
Il problema è, tenendo conto l'esempio postato e quindi la corrente struttura del file XML, se per esempio al secondo elemento (che corrisponderà a quello di indice 1) volessi aggiungere 1 o 2 nodi facendolo diventare ad esempio come segue:
Come posso fare?codice:<?xml version="1.0" encoding="utf-8" ?> <DataBase> <db> <arg>dato1</arg> <ris>dato2</ris> </db> <db> <arg>dato3</arg> <ris>dato4</ris> <ris2>dato7</ris> <ris3>dato8</ris> </db> <db> <arg>dato5</arg> <ris>dato6</ris> </db> </DataBase>
Io per la lettura dei dati, sia per popolare i controlli del form che per la loro eventuale modifica, utilizzo XmlNodeList e più precisamente:
Grazie in anticipo ^_^codice:elemarg = xmldoc.DocumentElement.GetElementsByTagName("arg"); elemris = xmldoc.DocumentElement.GetElementsByTagName("ris");

Rispondi quotando