我正在编写一个程序,从mp3获取元数据信息,然后将其存储到xml文件中。尝试写入文件时出错。错误是:Argument Exception Invalid name character in 'Nirvana
OpenFileDialog getFiles = new OpenFileDialog();
getFiles.Multiselect = true;
if (getFiles.ShowDialog() == DialogResult.OK)
{
foreach (String mp3Files in getFiles.FileNames)
{
byte[] Buffer = new byte[128];
FileStream mediaFile = new FileStream(mp3Files, FileMode.Open);
mediaFile.Seek(-128, SeekOrigin.End);
mediaFile.Read(Buffer, 0, 128);
string isMP3 = Encoding.Default.GetString(Buffer, 0, 3);
if (isMP3.CompareTo("TAG") == 0)
{
string Album = Encoding.Default.GetString(Buffer, 63, 30);
string Artist = Encoding.Default.GetString(Buffer, 33, 30);
XMLFileToFile.WriteElementString(Artist, Album); //Error here.
XMLFileToFile.WriteEndElement();
}
}
}
答案 0 :(得分:0)
这些是您应该避免的XML文件中的转义字符:
" "
' '
< <
> >
& &
您可以在转换转义字符时使用此图表:
原始字符 strong> XML实体替换 XML数字替换 < / KBD>
&LT; &安培; LT; &安培;#60;
&GT; &安培; GT; &安培;#62;
“ &amp; quot; &amp;#34;
&安培; &放大器;放大器; &安培;#38;
” &安培;者; &安培;#39;
对于您的代码,您可以编写如下内容:
string Album = Encoding.Default.GetString(Buffer, 63, 30).ValidateXML();
string Artist = Encoding.Default.GetString(Buffer, 33, 30).ValidateXML();
XMLFileToFile.WriteElementString(Artist, Album); //This should run smoothly.
static string ValidateXML(this string value)
{
return value.Replace(@"""",""").Replace("'","'").Replace("<","<").Replace(">",">").Replace("&","&");
}
答案 1 :(得分:0)
你需要转义你的字符串,单引号会让你的代码失控。
尝试这样的事情。
Filename = Filename.Replace("'", @"\'");
答案 2 :(得分:0)
使用WriteElementString
,您尝试使用Artist
作为节点的名称,对于您报告的错误,它包含引号,该引号不是节点名称的有效字符。请尝试删除引号和其他无效字符。