private static void ImportXMLFile(string filePath) { //Console.WriteLine("Import du fichier : " + filePath); //Console.WriteLine(string.Format("Import du fichier : {0} {1:00}", filePath, 5)); Console.WriteLine($"Import du fichier : {filePath}"); //Nouvelle syntaxe pour string.format depuis C# 6 try { using (LISAEntities entities = new LISAEntities()) { entities.Database.Connection.Open(); XDocument document = XDocument.Load(filePath); foreach (XElement operationElement in document.Descendants(XName.Get("operation"))) { Operation operation = ParseOperationElement(operationElement, entities); foreach (XElement catalogElement in operationElement.Elements(XName.Get("catalog"))) { Catalogue catalogue = ParseCatalogElement(catalogElement, entities, operation); XElement pagesElement = catalogElement.Element(XName.Get("pages")); //XElement shopsElement = catalogElement.Element(XName.Get("shops")); foreach (XElement pageElement in pagesElement.Elements()) { Page page = ParsePageElement(pageElement, entities, catalogue); XElement productsElement = pageElement.Element(XName.Get("products")); foreach (XElement productElement in productsElement.Elements()) { Article article = ParseArticleElement(productElement, entities); } } foreach (XElement shopElement in catalogElement.Descendants(XName.Get("shop"))) { ParseShopElement(shopElement, entities, catalogue); } } } entities.SaveChanges(); } } catch (Exception ex) { //TODO : Voir comment gérer les erreurs d'import. Console.WriteLine($"Impossible d'importer le fichier {filePath + Environment.NewLine + ex.ToString()}"); } }
/// <summary> /// Importe les données du fichier XML et les enregistre en base de données /// </summary> /// <param name="filePath">Chemin du fichier XML</param> private static void ImportXMLFile(string filePath) { Console.WriteLine("Import du fichier : " + filePath); //Console.WriteLine($"Import du fichier : {filePath}"); try { using (LISAEntities entities = new LISAEntities()) { // Ouvre la connexion vers la base de donnée entities.Database.Connection.Open(); XDocument document = XDocument.Load(filePath); ParseTypeMedia(entities); // Boucle sur les opérations du fichier XML foreach (XElement operationElement in document.Descendants(XName.Get("operation"))) { Operation operation = ParseOperationElement(operationElement, entities); // Boucle sur les catalogue du fichier XML foreach (XElement catalogElement in operationElement.Elements(XName.Get("catalog"))) { Catalogue catalog = ParseCatalogElement(catalogElement, entities, operation); // Boucle sur les magasins du fichier XML foreach (XElement shopElement in catalogElement.Elements(XName.Get("shops")).Elements()) { Magasin shop = ParseShopElement(shopElement, entities); ParseShopCatalogElement(shopElement, entities, catalog, shop); } // Boucle sur les pages du fichier XML foreach (XElement pageElement in catalogElement.Elements(XName.Get("pages")).Elements()) { Page page = ParsePageElement(pageElement, entities, catalog); foreach (XElement articleElement in pageElement.Elements(XName.Get("products")).Elements()) { Categorie categorie = ParseCategorieElement(articleElement, entities); Article article = ParseArticleElement(articleElement, entities, pageElement, categorie); ParseMediumPictoElement(articleElement, entities, article); //ParseMediumImageElement(articleElement, entities, article); PageArticle pageArticle = ParsePageArticleElement(articleElement, entities, page, article); PrixCatalogueArticle prixCatalogueArticle = ParsePrixCatalogueArticleElement(articleElement, entities, catalog, article); } } } } entities.SaveChanges(); } } catch (Exception ex) { Console.WriteLine($"Impossible d'importer le fichier {filePath + Environment.NewLine + ex.Message}"); } #region Exo : Ajout opération, catalogue, page ////Créer la chaine de connexion //using (LISAEntities entities = new LISAEntities()) //{ // entities.Operations.ToList().ForEach(o => entities.Operations.Remove(o)); // entities.Catalogues.ToList().ForEach(c => entities.Catalogues.Remove(c)); // entities.Pages.ToList().ForEach(p => entities.Pages.Remove(p)); // //Créer une opération // Operation op = new Operation // { // Code = "Je suis le code de l'opération", // Titre = "Je suis le titre de l'opération", // DateDebut = DateTime.Now, // DateFin = DateTime.Now, // Catalogues = null // }; // entities.Operations.Add(op); // //Créer un catalogue // Catalogue cat = new Catalogue // { // Hauteur = 500, // Largeur = 500, // Libelle = "Je suis le libelle du catalogue", // Type = "Je suis le type du catalogue", // Vitesse = "V3", // Operation = op // }; // entities.Catalogues.Add(cat); // //Créer trois pages // List<Page> allPages = new List<Page>(); // for (int i = 0; i < 10; i++) // { // Page page = new Page() // { // Numero = i, // Catalogue = cat // }; // allPages.Add(page); // } // //Page page1 = new Page() // //{ // // Numero = 1, // // Catalogue = cat // //}; // //Page page2 = new Page() // //{ // // Numero = 2, // // Catalogue = cat // //}; // //Page page3 = new Page() // //{ // // Numero = 3, // // Catalogue = cat // //}; // //entities.Pages.Add(page1); // //entities.Pages.Add(page2); // //entities.Pages.Add(page3); // foreach (Page page in allPages) // { // entities.Pages.Add(page); // } #endregion }