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

时间:2014-11-01 10:13:54

标签: c# xml database

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

        }
    }

1 个答案:

答案 0 :(得分:3)

这是问题所在:

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

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

databaseWriter.WriteElementString("SongFilePath", newSongPath);

(当然,你需要做同样的事情。)

请注意,虽然在这种情况下您的代码相当简单,但对于更复杂的XML,您最好不要构建XDocument然后将其保存到磁盘。此外,您应该为作者使用using声明,因此即使有异常,它也会自动处理。 (然后,您可以删除Close电话。)

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

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