using System; using System.Collections.Generic; using System.Globalization; using System.Xml; using PI_Assync_PLD.Models; public class PLDProcessor { public List ProcessarXML(string xml) { List pldList = new List(); XmlDocument doc = new XmlDocument(); doc.LoadXml(xml); XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable); nsmgr.AddNamespace("bm", "http://xmlns.energia.org.br/BM/v1"); nsmgr.AddNamespace("bo", "http://xmlns.energia.org.br/BO/v1"); nsmgr.AddNamespace("hdr", "http://xmlns.energia.org.br/MH/v1"); nsmgr.AddNamespace("soapenv", "http://schemas.xmlsoap.org/soap/envelope"); nsmgr.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance"); foreach (XmlNode pldNode in doc.SelectNodes("//bm:plds//bm:pld", nsmgr)) { DateTime data = DateTime.ParseExact( pldNode.SelectSingleNode("bo:vigencia//bo:inicio", nsmgr).InnerText, "yyyy-MM-dd'T'HH:mm:ss'-03:00'", null ); DateTime dia = data.Date; int hora = data.Hour + 1; string mes = data.ToString("yyMM"); int diaSemana = (int)data.DayOfWeek == 0 ? 7 : (int)data.DayOfWeek; foreach (XmlNode valorNode in pldNode.SelectNodes("bo:valores/bo:valor", nsmgr)) { string submercado = valorNode.SelectSingleNode("bo:submercado//bo:nome", nsmgr).InnerText; double valor = double.Parse(valorNode.SelectSingleNode("bo:valor//bo:valor", nsmgr).InnerText, new CultureInfo("en-US")); pldList.Add(new PLDModel(dia, hora, submercado, valor, mes, diaSemana)); } } return pldList; } }