附加到大型xml

Tim*_*mmi 1 c#

我正在写一个程序来存储歌曲的细节到xml这里是我的代码

            private XmlDocument mediaXmlDoc = new XmlDocument();
            private XmlNode rootNode;

            mediaXmlDoc.RemoveAll();

            rootNode = mediaXmlDoc.CreateElement("filelist");
            mediaXmlDoc.AppendChild(rootNode);
Run Code Online (Sandbox Code Playgroud)

对于每首歌我都附加如下的细节

            XmlNode file = mediaXmlDoc.CreateElement("file");                

            XmlNode filename = mediaXmlDoc.CreateElement("filename");
            filename.InnerText = FileName;
            file.AppendChild(filename);

            XmlNode path = mediaXmlDoc.CreateElement("path");
            path.InnerText = Path;
            file.AppendChild(path);

            XmlNode ext = mediaXmlDoc.CreateElement("ext");
            ext.InnerText = Ext;
            file.AppendChild(ext);

            XmlNode artist_name = mediaXmlDoc.CreateElement("artist_name");
            artist_name.InnerText = ArtistNameString;
            file.AppendChild(artist_name);

            XmlNode song_title = mediaXmlDoc.CreateElement("song_title");
            song_title.InnerText = SongTitleString;
            file.AppendChild(song_title);

            XmlNode genre = mediaXmlDoc.CreateElement("genre");
            genre.InnerText = GenreString;
            file.AppendChild(genre);

            XmlNode comments = mediaXmlDoc.CreateElement("comments");
            comments.InnerText = CommentsString;
            file.AppendChild(comments);

            XmlNode album_name = mediaXmlDoc.CreateElement("album_name");
            album_name.InnerText = AlbumNameString;
            file.AppendChild(album_name);

            XmlNode year = mediaXmlDoc.CreateElement("year");
            year.InnerText = YearString;
            file.AppendChild(year);

            XmlNode track_number = mediaXmlDoc.CreateElement("track_number");
            track_number.InnerText = TrackNumberString;
            file.AppendChild(track_number);

            XmlNode duration = mediaXmlDoc.CreateElement("duration");
            duration.InnerText = DurationString;
            file.AppendChild(duration);

            XmlNode bit_rate = mediaXmlDoc.CreateElement("bit_rate");
            bit_rate.InnerText = BitRateString;
            file.AppendChild(bit_rate);

            XmlNode protected_media = mediaXmlDoc.CreateElement("protected");
            protected_media.InnerText = ProtectedString;
            file.AppendChild(protected_media);

            XmlNode sample_rate = mediaXmlDoc.CreateElement("sample_rate");
            sample_rate.InnerText = SampleRateString;
            file.AppendChild(sample_rate);

            XmlNode channels = mediaXmlDoc.CreateElement("channels");
            channels.InnerText = ChannelsString;
            file.AppendChild(channels);

            rootNode.AppendChild(file);
Run Code Online (Sandbox Code Playgroud)

我的问题是因为xml的大小增加了附加速度感觉减少我可以做什么来解决这个性能问题

谢谢,

Raz*_*zie 7

你应该真的使用XmlWriter类.XmlDocument将所有xml加载到内存中,对于大文件,操作可能变得非常慢.

请参阅此示例教程,了解如何使用此类.