2010-10-11 45 views
1

我有一个我想要使用智能设备(Pocket PC)输出到外部XML文件的歌曲列表。在Pocket PC上写入XML

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(); 

该应用程序似乎编写的XML文件,但它总是空的。 'finalbasket'列表中的确有项目。任何想法我做错了什么?

回答

2

我想你的xmlOut.Close()前右需要一个

xmlOut.WriteEndDocument(); 

。此外,我不知道这是你的问题的一部分,但此行:

xmlOut.WriteStartElement("Songs"); 

也许应该是这样的:

xmlOut.WriteStartElement("Song"); 
+0

还不行。我试过一些不同的文件名,它似乎根本没有输出文件,但没有编译错误。我是否需要将文件添加到我的项目中? – 2010-10-11 22:41:14

+0

这段代码可能在'try/catch'块中,它正在默默吞咽任何错误?您的'GetApplicationDirectory'方法可能会在最后返回一个带有“\”的路径,这会导致'filePath'无效。在那种情况下,我通常使用'Path.Combine',所以我不必担心它。 – MusiGenesis 2010-10-12 01:46:11

+0

手动调用Flush是否有所作为? – ctacke 2010-10-12 03:20:24

相关问题