所以我用C#制作音乐播放器。当用户打开歌曲时,我希望将其保存为xml文件(它保存其路径,名称和持续时间)。每当我尝试将值发送到执行保存的库时,我都会收到此错误。
MusicLibraryWriter.DatabaseWriter+MyException: System.ArgumentException: Invalid name character in 'Song file path'. The ' ' character, hexadecimal value 0x20, cannot be included in a name.
这是我的代码:
public string addToDatabasedataBaseInfo( songInfo dataToWrite)
{
try
{
string newSongPath = dataToWrite.songFilePath;
XmlWriter databaseWriter = XmlWriter.Create("databaseEdit.xml");
databaseWriter.WriteStartDocument();
databaseWriter.WriteStartElement("Songs");
databaseWriter.WriteElementString("Song file path", newSongPath);
databaseWriter.WriteElementString("Song duration", dataToWrite.songDuration.ToString());
databaseWriter.WriteEndElement();
databaseWriter.WriteEndDocument();
databaseWriter.Close();
//databaseWriter.Dispose ();
mergeDataBase();
return "Success";
}
catch (Exception e)
{
throw new MyException(e.ToString());
}
}
答案 0 :(得分:3)
这是问题所在:
databaseWriter.WriteElementString("Song file path", newSongPath);
您正在尝试创建名称为Song file path
的元素,并且该元素在XML中无效。元素名称不能包含空格。你可以使用类似的东西:
databaseWriter.WriteElementString("SongFilePath", newSongPath);
(当然,你需要做同样的事情。)
请注意,虽然在这种情况下您的代码相当简单,但对于更复杂的XML,您最好不要构建XDocument
然后将其保存到磁盘。此外,您应该为作者使用using
声明,因此即使有异常,它也会自动处理。 (然后,您可以删除Close
电话。)
另请注意,尽管您的方法名称暗示它将添加一个条目,但它实际上只会用其中的一首歌完全替换该文件。
最后,您应该遵循.NET命名约定,在PascalCase中命名您的方法和类型(大写字母)。