Creare file xml

giovedì 05 febbraio 2009 - 14.10

-*Web_Horse*- Profilo | Junior Member

Da oggi mi sono addentrato nel percorso della manipolazione dei dati e file xml.

Fino ad ora ho trovato solo informazioni riguardo la lettura, la modifica ed il salvataggio di tali tipi di file,
ma nulla su come poterli creare.
Ho provato la classe xmltextwriter, ma non funziona nulla. Il file che specifico nel costruttore >>> XmlTextWriter xmlTextWriter = new XmlTextWriter("C:\\config.xml", Encoding.UTF8);
non viene creato.

Qual é il metodo per creare file xml da un'applicazione windows form?

Grazie, a presto.



luigidibiasi Profilo | Guru

Ciao,
puoi usare l'oggetto Xml.XmlDocument che ti gestisce il salvataggio in automatico....

' i metodi di XmlDocument ti permettono di inserire i nodi
' e di manipolare il documento come vuoi
Dim t As Xml.XmlDocument = New Xml.XmlDocument

'quando hai pronto documento xml da salvare usi semplicemente il metodo save
t.Save("C:\o.xml")

Luigi Di Biasi
http://blogs.dotnethell.it/luigidibiasi/

-*Web_Horse*- Profilo | Junior Member

L'avevo già provato ma con esito negativo. Forse ho sbagliato a scrivere la path:
XmlDocument document = new XmlDocument();
document.Save("C:\\a.xml");

ora provo con document.Save("C:\a.xml");

-*Web_Horse*- Profilo | Junior Member

Ho riprovato con la nuova correzione, ma qui non salva niente.
Il file non viene creato

luigidibiasi Profilo | Guru

Magari posta il codice che usi per crearti il documento... e l'eventuale errore che ti dà
Tieni presente che per salvarlo devi inserire almeno l'elemento root ... forse è quello il problema?
Luigi Di Biasi
http://blogs.dotnethell.it/luigidibiasi/

-*Web_Horse*- Profilo | Junior Member

Sto provando anche con la classe statica File metodo File.Create(string path) ma nulla.

-*Web_Horse*- Profilo | Junior Member

L'elemento root sarebbe il nodo principale.
Il codice che sto utilizzando per la prova é quello che ho postato nel messaggio principale, quindi non viene inserito nessun nodo.
Ora provo ad inserire quello principale e a salvare.

luigidibiasi Profilo | Guru

Te lo scrivo in VB tu traducilo in c#

Dim p As Xml.XmlDocument = New Xml.XmlDocument p.AppendChild(p.CreateElement("k")) p.Save("C:\k.xml")

se non salva su HD magari non hai i permessi per inserirlo.
Luigi Di Biasi
http://blogs.dotnethell.it/luigidibiasi/

-*Web_Horse*- Profilo | Junior Member

Si ho fatto, ora me lo ha salvato. Ho inserito una XmlDeclaration ed il file é stato creato/salvato.
Ne consegue che i file completamente vuoti, non vengono creati.

Codice :
XmlDocument document = new XmlDocument();
document.CreateXmlDeclaration("1.0", "utf-8", null);
document.Save("a.xml");

File salvato nella cartella c:\

Grazie per il supporto.
Spero di non aver disturbato. A presto.

-*Web_Horse*- Profilo | Junior Member

Ci risiamo, adesso non riscrive più un cavolo,e la cosa bella é che il metodo é sempre lo stesso,
ho cambiato solo la path di destinazione, poi ho rimesso quella precedente con un nome di file diverso, ed ora niente X___x

-*Web_Horse*- Profilo | Junior Member

Non dipende dal metodo. Ho appena scoperto che al bottone del form non viene stranamente allegato il gestore
dell'evento click che lancia la compilazione del file xml, ma é strano, perché oggi aveva funzionato.
Ora cerco di risolvere e scriverò se funzionerà o meno.

-*Web_Horse*- Profilo | Junior Member

Ok, adesso funziona tutto correttamente.
Praticamente il metodo di proprietà che ho utlizzato per la lettura/scrittura dei metodi
del form che utilizzo, non instanziava la creazione della classe del mio form.
Ecco un esempio simile del codice che utilizzavo:

private FormAbc _FormXml;
public FormAbc FormXml
{
get { return _FormXml== null ? new FormAbc () : _FormXml; }
set { _FormXml= value; }
}

FormXml.button1.click += new eventhandler...
FormXml.ShowDialog();

void button1_click()
{
scrivi xml
}

Bene, in questo modo non funzionava ed ho dovuto preferire al momento:

private FormAbc _FormXml;
public FormAbc FormXml
{
get { return _FormXml== null ? new FormAbc () : _FormXml; }
set { _FormXml= value; }
}
FormAbc FormXml = new FormAbc();
FormXml.button1.click += new eventhandler...
FormXml.ShowDialog();

void button1_click()
{
scrivi xml
}

Sinceramente non riesco a capire, poiché il campo del form veniva instanziato, visto che il form veniva mostrato correttamente al richiamo
del metodo ShowDialog(), ma l'evento non veniva sottoscritto.

Bo, l'importante é che ora funzioni tutto secondo come vuole la logica del codice.

Grazie a tutti, a presto.
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5