Consulta da data máxima de cada banco de dados realizada individualmente. Dados sendo inseridos conforme a data máxima de cada banco de dados. Pendente realizar paginação da requisição http.
45 lines
1.7 KiB
C#
45 lines
1.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Globalization;
|
|
using System.Xml;
|
|
using PI_Assync_PLD.Models;
|
|
|
|
public class PLDProcessor
|
|
{
|
|
public List<PLDModel> ProcessarXML(string xml)
|
|
{
|
|
List<PLDModel> pldList = new List<PLDModel>();
|
|
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;
|
|
}
|
|
}
|