2010-10-11 7 views
1

J'ai une liste de chansons que je veux exporter vers un fichier XML externe en utilisant un périphérique intelligent (pocket pc).Ecriture en XML dans un Pocket PC

String path = GetAppDir(); 
string filePath = path + @"\output\songs.xml"; 
XmlWriter xmlOut = XmlWriter.Create(filePath, settings); 


xmlOut.WriteStartDocument(); 
xmlOut.WriteStartElement("Songs"); 


foreach (Song songTmp in finalbasket) 
{ 
    xmlOut.WriteStartElement("Songs"); 
    xmlOut.WriteAttributeString("Name", songTmp.SongName); 
    xmlOut.WriteElementString("Artist", songTmp.SongArtist); 
    xmlOut.WriteElementString("Price", Convert.ToString(songTmp.SongPrice)); 
    xmlOut.WriteEndElement(); 
} 


xmlOut.WriteEndElement(); 


xmlOut.Close(); 

L'application semble écrire le document XML, mais il apparaît toujours vide. Il y a en effet des éléments dans la liste 'finalbasket'. Des idées de ce que je fais mal?

Répondre

2

Je pense que vous avez besoin d'un

xmlOut.WriteEndDocument(); 

juste avant le xmlOut.Close(). De plus, je ne sais pas si cela fait partie de votre problème, mais cette ligne:

xmlOut.WriteStartElement("Songs"); 

devrait probablement être ceci:

xmlOut.WriteStartElement("Song"); 
+0

ne fonctionne toujours pas. J'ai essayé quelques noms de fichiers différents, il ne semble pas sortir un fichier du tout, mais il n'y a pas d'erreurs de compilation. Dois-je ajouter un fichier à mon projet? –

+0

Est-ce que ce code est peut-être dans un bloc 'try/catch' qui avale silencieusement des erreurs? Votre méthode 'GetApplicationDirectory' peut retourner un chemin avec un" \ "à la fin, ce qui rendrait' filePath' invalide. J'utilise habituellement 'Path.Combine' dans cette situation, donc je n'ai pas à m'inquiéter à ce sujet. – MusiGenesis

+0

Est-ce que appeler manuellement Flush fait la différence? – ctacke

Questions connexes