Увеличьте скорость генерации xml. NET - PullRequest
0 голосов
/ 23 апреля 2020

Я использую класс XmlWriter для генерации xml файлов, я хочу ускорить операцию.

Я заметил, что для создания каждого файла требуется больше времени, чем для создания предыдущего.

Я не знаю, возникает ли проблема из класса XmlWriter, который используется для генерации файлов, или из for l oop ...

 private void StartButton_Click(object sender, EventArgs e)
    {
        try
        {
            LogInformation("\nRécupération des informations des épisodes à compléter ....\n");
            DataMag dataMag = new DataMag();
            if (dataMag.episodes.Count == 0)
                LogInformation("Aucun épisode n'est trouvé");

            int filesCounter = 0;
            for (int i = 0; i < dataMag.episodes.Count; i += Configuration.NbEpisodesPerXMLFile)
            {
                filesCounter++;
                string xMLDocumentTitle = "\\Completor_" + string.Format("{0:00}", filesCounter) + ".xml";
                XmlWriterSettings settings = new XmlWriterSettings();
                settings.Encoding = System.Text.Encoding.UTF8;
                using (XmlWriter writer = XmlWriter.Create(Configuration.OutputFolderPath + xMLDocumentTitle, settings))
                {
                    //Mise en forme des balises xml
                    XMLDataNode xMLDataNode = new XMLDataNode();
                    XMLBuilder.BuildXMLNode(xMLDataNode);
                    writer.WriteStartDocument();
                    writer.WriteStartElement(xMLDataNode.ProgramTag);
                    for (int j = i; j < i + Configuration.NbEpisodesPerXMLFile && j < dataMag.episodes.Count; j++)
                    {
                        try
                        {
                            writer.WriteStartElement(xMLDataNode.PruductTag);
                            writer.WriteAttributeString(xMLDataNode.RefWatsOnAttribute, dataMag.episodes[j].RefWatsOn);
                            writer.WriteAttributeString(xMLDataNode.ADValueAttribute, dataMag.episodes[j].ADValue.ToString().ToLower());
                            writer.WriteAttributeString(xMLDataNode.VMValueAttribute, dataMag.episodes[j].VMValue.ToString().ToLower());
                            writer.WriteAttributeString(xMLDataNode.IndEpiIneditTNTAttribute, dataMag.episodes[j].IndEpiIneditTNT.ToString().ToLower());
                            writer.WriteAttributeString(xMLDataNode.IndQuotaIneditNT1Attribute, dataMag.episodes[j].IndQuotaIneditNT1.ToString().ToLower());
                            writer.WriteAttributeString(xMLDataNode.IndQuotaIneditTMCAttribute, dataMag.episodes[j].IndQuotaIneditTMC.ToString().ToLower());
                            writer.WriteAttributeString(xMLDataNode.DepRangTeleAttribute, dataMag.episodes[j].DepRangTele.ToString());
                            writer.WriteAttributeString(xMLDataNode.DepRangTf1Attribute, dataMag.episodes[j].DepRangTf1.ToString());
                            writer.WriteFullEndElement();
                            LogInformation($"Taritement l'épisode NumEM : {dataMag.episodes[j].NumEM}, RefWatsOn: {dataMag.episodes[j].RefWatsOn} .... OK");
                        }
                        catch (Exception ex)
                        {
                            LogInformation($"Erreur lors du traitement de l'épisode suivant : NumEM : {dataMag.episodes[j].NumEM}, RefWatsOn: {dataMag.episodes[j].RefWatsOn}, erreur: {ex.Message}");
                        }
                    }
                    writer.WriteEndElement();
                    writer.WriteEndDocument();
                    startButton.Enabled = false;
                }
                LogInformation($"\nLe fichier {xMLDocumentTitle} est généré avec succès\n");
            }
            LogInformation("Fin du traitement avec succès");
        }
        catch (Exception ex)
        {
            LogInformation("Une erreur s'est produite :" + ex.Message);
            startButton.Enabled = false;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...