gpt4 book ai didi

C# Xml - 名称字符无效;名称中不能包含 ' ' 字符

转载 作者:搜寻专家 更新时间:2023-10-30 22:11:32 26 4
gpt4 key购买 nike

所以我用 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());

}
}

最佳答案

问题是:

databaseWriter.WriteElementString("Song file path", newSongPath);

您正在尝试创建一个名称为 Song file path 的元素,这在 XML 中是无效的。元素名称不能包含空格。你可以使用类似的东西:

databaseWriter.WriteElementString("SongFilePath", newSongPath);

(当然,您需要在此期间做同样的事情。)

请注意,虽然在这种情况下您的代码相当简单,但对于更复杂的 XML,您最好构建一个 XDocument 然后将其保存到磁盘。此外,您应该为编写器使用 using 语句,这样即使出现异常也会自动处理它。 (然后您可以删除 Close 调用。)

另请注意,尽管您的方法名称暗示它将添加 一个条目,但它实际上将仅用其中的一首歌曲完全替换该文件。

最后,您应该遵循 .NET 命名约定,以 PascalCase(首字母大写)命名您的方法和类型。

关于C# Xml - 名称字符无效;名称中不能包含 ' ' 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26688198/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com