0
I have recursive xml, I want to add the xml values to context but in the xml example it adds the Utilities right but when it arrives to add Functionalities, it adds only the values of the first Functio element. And there are 4 Employees and end up doing 4 add but with the same values of the first element in Employees.
I believe I’m missing the Employee Xpath because only the Employee Xpath has to put it in the way of the other nodes. If not paste, it returns null.
XPathDocument document = new XPathDocument(directoryTemp + "/" + wNomeArquivo);
XPathNavigator navigator = document.CreateNavigator();
XPathNodeIterator xnEmpresaCliente = navigator.Select("/EmpresaLicenca/LSTEmpresaCliente/EmpresaClientes");
XPathNodeIterator xnFuncionarios = navigator.Select("/EmpresaLicenca/LSTEmpresaCliente/EmpresaClientes/LSTFuncionarios/Funcionarios");
XPathNodeIterator xnDependentes = navigator.Select("/EmpresaLicenca/LSTEmpresaCliente/EmpresaClientes/LSTFuncionarios/Funcionarios/LSTDependentes/Dependentes");
XPathNodeIterator xnEnderecos = navigator.Select("/EmpresaLicenca/LSTEmpresaCliente/EmpresaClientes/LSTFuncionarios/Funcionarios/LSTEnderecos/Endereco");
XPathNodeIterator xnContatos = navigator.Select("/EmpresaLicenca/LSTEmpresaCliente/EmpresaClientes/LSTFuncionarios/Funcionarios/LSTContatos/Telefone");
XPathNodeIterator xnMovimentacao = navigator.Select("/EmpresaLicenca/LSTEmpresaCliente/EmpresaClientes/LSTFuncionarios/Funcionarios/LSTMovimentacaoFuncionarios/MovimentacaoFuncionarios");
List<MigracaoEmpresaCliente> lstEmpresaClientes = new List<MigracaoEmpresaCliente>();
List<MigracaoFuncionario> lstFuncionarios = new List<MigracaoFuncionario>();
List<MigracaoDependentes> lstDependentes = new List<MigracaoDependentes>();
List<MigracaoEndereco> lstEndereco = new List<MigracaoEndereco>();
List<MigracaoTelefone> lstTelefone = new List<MigracaoTelefone>();
List<C_MigracaoMovimentacaoFuncionario> lstMovimentacaoFuncionarios = new List<C_MigracaoMovimentacaoFuncionario>();
MigracaoEmpresaCliente wEmpresaCliente = new MigracaoEmpresaCliente();
MigracaoFuncionario wFuncionarios = new MigracaoFuncionario();
MigracaoDependentes wDependentes = new MigracaoDependentes();
MigracaoEndereco wEndereco = new MigracaoEndereco();
MigracaoTelefone wTelefones = new MigracaoTelefone();
C_MigracaoMovimentacaoFuncionario wMovimentacaoFuncionario = new C_MigracaoMovimentacaoFuncionario();
foreach (XPathNavigator c in xnEmpresaCliente)
{
wEmpresaCliente = new MigracaoEmpresaCliente
{
CodigoCNAE = c.SelectSingleNode("CodigoCNAE").Value,
CPFCNPJ = c.SelectSingleNode("CNPJ").Value,
DataFundacao = Convert.ToDateTime(c.SelectSingleNode("DataFundacao").Value),
IE = c.SelectSingleNode("InscricaoEstadual").Value,
Nome = c.SelectSingleNode("NomeCliente").Value,
NomeFantasia = c.SelectSingleNode("NomeFantasia").Value,
MigracaoDados = wMigracaoDados,
SequenciaMigracao = wMigracaoDados.Sequencia
};
lstEmpresaClientes.Add(wEmpresaCliente);
}
ctx.MigracaoEmpresaCliente.AddRange(lstEmpresaClientes);
foreach (XPathNavigator f in xnFuncionarios)
{
wFuncionarios = new MigracaoFuncionario()
{
CasadoBrasileiro = Convert.ToBoolean(f.SelectSingleNode("//LSTFuncionarios/Funcionarios/CasadoBrasileiro").Value),
CNHCategria = f.SelectSingleNode("//LSTFuncionarios/Funcionarios/CategoriaCNH").Value,
CNHData1Habilitacao = Convert.ToDateTime(f.SelectSingleNode("//LSTFuncionarios/Funcionarios/Data1Habilatacao").Value),
CNHDataExpedicao = Convert.ToDateTime(f.SelectSingleNode("//LSTFuncionarios/Funcionarios/DataExpedicaoCNH").Value),
CNHDataValidade = Convert.ToDateTime(f.SelectSingleNode("//LSTFuncionarios/Funcionarios/DataValidadeCNH").Value),
CNHEstado = f.SelectSingleNode("//LSTFuncionarios/Funcionarios/EstadoCNH").Value,
CondicaoTrabalhadorEstrangeiro = f.SelectSingleNode("//LSTFuncionarios/Funcionarios/CondicaoTrabalhador").Value,
COR = f.SelectSingleNode("//LSTFuncionarios/Funcionarios/Cor").Value,
CPFCNPJ = f.SelectSingleNode("//LSTFuncionarios/Funcionarios/CPF").Value,
CTPSEstado = f.SelectSingleNode("//LSTFuncionarios/Funcionarios/EstadoCTPS").Value,
CTPSSerie = f.SelectSingleNode("//LSTFuncionarios/Funcionarios/NumeroSerieCTPS").Value,
DataChegadaBrasil = Convert.ToDateTime(f.SelectSingleNode("//LSTFuncionarios/Funcionarios/DataChegada").Value),
DataNascimento = Convert.ToDateTime(f.SelectSingleNode("//LSTFuncionarios/Funcionarios/DataNascimento").Value),
EstadoCivil = f.SelectSingleNode("//LSTFuncionarios/Funcionarios/EstadoCivil").Value,
EstadoNascimento = f.SelectSingleNode("//LSTFuncionarios/Funcionarios/Estado").Value,
Estrangeiro = Convert.ToBoolean(f.SelectSingleNode("//LSTFuncionarios/Funcionarios/Estrangeiro").Value),
FilhosBrasil = Convert.ToBoolean(f.SelectSingleNode("//LSTFuncionarios/Funcionarios/FilhosBrasil").Value),
InformacoesFilhos = f.SelectSingleNode("//LSTFuncionarios/Funcionarios/InformacoesFilhos").Value,
MunicipioNascimento = f.SelectSingleNode("//LSTFuncionarios/Funcionarios/Municipio").Value,
Nome = f.SelectSingleNode("//LSTFuncionarios/Funcionarios/Nome").Value,
NomeMae = f.SelectSingleNode("//LSTFuncionarios/Funcionarios/NomeMae").Value,
NomePai = f.SelectSingleNode("//LSTFuncionarios/Funcionarios/NomePai").Value,
NomePaisNascimento = f.SelectSingleNode("//LSTFuncionarios/Funcionarios/NomePais").Value,
NumeroCNH = f.SelectSingleNode("//LSTFuncionarios/Funcionarios/NumeroCNH").Value,
NumeroCTPS = f.SelectSingleNode("//LSTFuncionarios/Funcionarios/NumeroCTPS").Value,
NumeroOC = f.SelectSingleNode("//LSTFuncionarios/Funcionarios/NumeroOC").Value,
NumeroRG = f.SelectSingleNode("//LSTFuncionarios/Funcionarios/NumeroRG").Value,
NumeroRIC = f.SelectSingleNode("//LSTFuncionarios/Funcionarios/NumeroRIC").Value,
NumeroRNE = f.SelectSingleNode("//LSTFuncionarios/Funcionarios/NumeroRNE").Value,
OCDataExpedicao = Convert.ToDateTime(f.SelectSingleNode("//LSTFuncionarios/Funcionarios/DataExpedicaoOC").Value),
QTDFilhos = Convert.ToInt32(f.SelectSingleNode("//LSTFuncionarios/Funcionarios/QTDEFilhos").Value),
OCDataValidade = Convert.ToDateTime(f.SelectSingleNode("//LSTFuncionarios/Funcionarios/DataValidadeOC").Value),
OCOrgaoExpedicao = f.SelectSingleNode("//LSTFuncionarios/Funcionarios/OrgaoExpedicaoOC").Value,
RGDataExpedicao = Convert.ToDateTime(f.SelectSingleNode("//LSTFuncionarios/Funcionarios/DataExpedicaoRG").Value),
RGOrgaoExpedicao = f.SelectSingleNode("//LSTFuncionarios/Funcionarios/OrgaoExpedicaoRG").Value,
RICDataExpedicao = Convert.ToDateTime(f.SelectSingleNode("//LSTFuncionarios/Funcionarios/DataExpedicaoRIC").Value),
RICOrgaoExpedicao = f.SelectSingleNode("//LSTFuncionarios/Funcionarios/OrgaoExpedicaoRIC").Value,
RNEDataExpedicao = Convert.ToDateTime(f.SelectSingleNode("//LSTFuncionarios/Funcionarios/DataExpedicaoRNE").Value),
RNEOrgaoExpedicao = f.SelectSingleNode("//LSTFuncionarios/Funcionarios/OrgaoExpedicaoRNE").Value,
Sexo = f.SelectSingleNode("//LSTFuncionarios/Funcionarios/Sexo").Value,
MigracaoEmpresaCliente = wEmpresaCliente,
SequenciaMigracaoEmpresa = wEmpresaCliente.Sequencia
};
lstFuncionarios.Add(wFuncionarios);
}
ctx.MigracaoFuncionario.AddRange(lstFuncionarios);
foreach (XPathNavigator d in xnDependentes)
{
wDependentes = new MigracaoDependentes()
{
CPF = d.SelectSingleNode("CPF").Value,
DataNascimento = Convert.ToDateTime(d.SelectSingleNode("DataNascimento").Value),
DeducaoIR = Convert.ToBoolean(d.SelectSingleNode("DeducaoIR").Value),
Nome = d.SelectSingleNode("Nome").Value,
RecebeSalarioFamilia = Convert.ToBoolean(d.SelectSingleNode("RecebeSalarioFamilia").Value),
TipoDependente = d.SelectSingleNode("TipoDependente").Value,
MigracaoFuncionario = wFuncionarios,
SequenciaMigracaoFuncionario = wFuncionarios.Sequencia
};
lstDependentes.Add(wDependentes);
}
ctx.MigracaoDependentes.AddRange(lstDependentes);
foreach (XPathNavigator e in xnEnderecos)
{
wEndereco = new MigracaoEndereco()
{
Bairro = e.SelectSingleNode("Bairro").Value,
CEP = e.SelectSingleNode("CEP").Value,
Cidade = e.SelectSingleNode("Cidade").Value,
Complemento = e.SelectSingleNode("Complemento").Value,
Endereco = e.SelectSingleNode("Logradouro").Value,
Numero = e.SelectSingleNode("Numero").Value,
Pais = e.SelectSingleNode("Pais").Value,
TipoEndereco = e.SelectSingleNode("TipoEndereco").Value,
UF = e.SelectSingleNode("UF").Value,
MigracaoFuncionario = wFuncionarios,
SequenciaMigracaoFuncionario = wFuncionarios.Sequencia
};
lstEndereco.Add(wEndereco);
}
ctx.MigracaoEndereco.AddRange(lstEndereco);
foreach (XPathNavigator t in xnContatos)
{
wTelefones = new MigracaoTelefone()
{
DDD = t.SelectSingleNode("DDD").Value,
Descricao = t.SelectSingleNode("DescricaoContato").Value,
Email = t.SelectSingleNode("EMail").Value,
Telefone = t.SelectSingleNode("NumeroTelefone").Value,
TipoContato = t.SelectSingleNode("TipoContato").Value,
MigracaoFuncionario = wFuncionarios,
SequenciaMigracaoFuncionario = wFuncionarios.Sequencia
};
lstTelefone.Add(wTelefones);
}
ctx.MigracaoTelefone.AddRange(lstTelefone);
foreach (XPathNavigator m in xnMovimentacao)
{
wMovimentacaoFuncionario = new C_MigracaoMovimentacaoFuncionario()
{
Altura = Convert.ToDecimal(m.SelectSingleNode("Altura").Value),
Aposentado = Convert.ToBoolean(m.SelectSingleNode("Aposentado").Value),
BancoAgencia = m.SelectSingleNode("BancoAgencia").Value,
BancoConta = m.SelectSingleNode("BancoConta").Value,
BancoNumero = m.SelectSingleNode("BancoNumero").Value,
CategoriaTrabalhador = m.SelectSingleNode("CategiaTrabalhador").Value,
CondicaoContratacao = m.SelectSingleNode("CondicaoContratacao").Value,
CursoTecnico = m.SelectSingleNode("CursoTecnico").Value,
DataAdmissao = Convert.ToDateTime(m.SelectSingleNode("DataAdmissao").Value),
DataDemissao = Convert.ToDateTime(m.SelectSingleNode("DataDemissao").Value),
DataInclusao = Convert.ToDateTime(m.SelectSingleNode("DataInclusao").Value),
DeficienciaAuditiva = Convert.ToBoolean(m.SelectSingleNode("DeficienciaAuditiva").Value),
DeficienciaFisica = Convert.ToBoolean(m.SelectSingleNode("DeficienciaFisica").Value),
DeficienciaIntelectual = Convert.ToBoolean(m.SelectSingleNode("DeficienciaIntelectual").Value),
Deficienciamental = Convert.ToBoolean(m.SelectSingleNode("DeficienciaMental").Value),
DeficienciaVisual = Convert.ToBoolean(m.SelectSingleNode("DeficienciaVisual").Value),
DemissaoJustaCausa = Convert.ToBoolean(m.SelectSingleNode("DemissaoJustaCausa").Value),
DescricaoJornadaTrabalho = m.SelectSingleNode("DescricaoJornadaTrabalho").Value,
Dominancia = m.SelectSingleNode("Dominancia").Value,
Escolaridade = m.SelectSingleNode("Escolaridade").Value,
ItemCategoria = m.SelectSingleNode("ItemCategoria").Value,
MesDataBase = Convert.ToInt32(m.SelectSingleNode("MesDataBaseCategoria").Value),
NaturezaAtividade = m.SelectSingleNode("NaturezaAtividade").Value,
NomeDepartamento = m.SelectSingleNode("NomeDepartamento").Value,
NomeFuncao = m.SelectSingleNode("NomeFuncao").Value,
NumeroMatricula = m.SelectSingleNode("NumeroMatricula").Value,
NumeroTrabalhador = m.SelectSingleNode("NumeroTrabalhador").Value,
Peso = Convert.ToDecimal(m.SelectSingleNode("Peso").Value),
PrimeiroEmprego = Convert.ToBoolean(m.SelectSingleNode("PrimeiroEmprego").Value),
Reabilitado = Convert.ToBoolean(m.SelectSingleNode("Reabilitado").Value),
RegimeJornada = m.SelectSingleNode("RegimeJornada").Value,
RegimePrevidenciario = m.SelectSingleNode("RegimePrevidenciario").Value,
RemuneracaoDescricao = m.SelectSingleNode("DescricaoRemuneracao").Value,
RemuneracaoUnidadePagamento = m.SelectSingleNode("UnidadePagamento").Value,
Tabagista = m.SelectSingleNode("Tabagista").Value,
TempoJornadaTrabalho = m.SelectSingleNode("TempoJornadaTrabalho").Value,
TipoAdmissao = m.SelectSingleNode("TipoAdmissao").Value,
TipoContratacao = m.SelectSingleNode("TipoContratacao").Value,
TipoContratoParcial = m.SelectSingleNode("TipoContratoParcial").Value,
TipoContratoTrabalho = m.SelectSingleNode("TipoContratoTrabalho").Value,
UsoAlcool = m.SelectSingleNode("UsoAlcool").Value,
UsoDrograsIlicitas = m.SelectSingleNode("UsoDrogasIlicitas").Value,
ValorRemuneracao = Convert.ToDecimal(m.SelectSingleNode("ValorRemuneracao").Value),
MigracaoFuncionario = wFuncionarios,
SequenciaMigracaoFuncionario = wFuncionarios.Sequencia
};
lstMovimentacaoFuncionarios.Add(wMovimentacaoFuncionario);
}
ctx.C_MigracaoMovimentacaoFuncionario.AddRange(lstMovimentacaoFuncionarios);
ctx.SaveChanges();