检索几个.mp3的信息并将它们存储到xml文档中

时间:2015-10-06 17:06:34

标签: c# xml linq-to-xml mp3 id3-tag

我使用TagLib从.mp3文件中检索信息,并使用LINQ to XML将其显示为XML文档,这里是正确的代码:

static class Program
{   
    [STAThread]
    static void Main()
    {
        TagLib.File file = TagLib.File.Create(@"path of one of my .mp3 files");
        XDocument xdoc = new XDocument(
            new XDeclaration("1.0", "utf-8", "yes"),
            new XElement("Music", new XAttribute("id", 001),
                new XElement("Album", file.Tag.Album),
                new XElement("AlbumArtist", file.Tag.AlbumArtists),
                new XElement("Title", file.Tag.Title),
                new XElement("Track", file.Tag.Track),
                new XElement("Genre", file.Tag.Genres),
                new XElement("Path", Path.GetFullPath("El Gozo (version acústica).mp3")))
            );
        xdoc.Save(@"C:\Users\ivan_000\Music\Data.xml");   
    }
}

但是现在我已经尝试了很多方法来开发相同的程序,其中几个.mp3文件存储在同一个XML文档中并且它不起作用。

static void Main()
{

    TagLib.File file = TagLib.File.Create(@"C:\Users\ivan_000\Music\El Gozo  (version acústica).mp3");
    TagLib.File file2 = TagLib.File.Create(@"C:\Users\ivan_000\Music\En el Trono está.mp3");
    TagLib.File file3 = TagLib.File.Create(@"C:\Users\ivan_000\Music\Por Siempre.mp3");

    XDocument xdoc = new XDocument(
        new XDeclaration("1.0", "utf-8", "yes"),
        new XElement("Music", new XAttribute("id", 001),
        new XElement("Album", file.Tag.Album),
        new XElement("AlbumArtist", file.Tag.FirstAlbumArtist),
        new XElement("Title", file.Tag.Title),
        new XElement("Track", file.Tag.Track),
        new XElement("Genre", file.Tag.FirstGenre),
        new XElement("Path", Path.GetFullPath("El Gozo (version acústica).mp3"))),
        new XElement("Music", new XAttribute("id", 002),
        new XElement("Album", file2.Tag.Album),
        new XElement("AlbumArtist", file2.Tag.FirstAlbumArtist),
        new XElement("Title", file2.Tag.Title),
        new XElement("Track", file2.Tag.Track),
        new XElement("Genre", file2.Tag.FirstGenre),
        new XElement("Path", Path.GetFullPath("Por Siempre.mp3"))),
        new XElement("Music", new XAttribute("id", 003),
        new XElement("Album", file3.Tag.Album),
        new XElement("AlbumArtist", file3.Tag.FirstAlbumArtist),
        new XElement("Title", file3.Tag.Title),
        new XElement("Track", file3.Tag.Track),
        new XElement("Genre", file3.Tag.FirstGenre),
        new XElement("Path", Path.GetFullPath("Por Siempre.mp3")))
    );
    xdoc.Save(@"C:\Users\ivan_000\Music\Data.xml");   
} 

1 个答案:

答案 0 :(得分:0)

XML文档可能只有一个根元素。你试图创造三个。将您的元素放在一个根元素中。

fs.js:549
  return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
             ^

TypeError: path must be a string