I have recursive xml, I want to add the xml values to context but in the example of xml it adds certainty to the ClientCons but when it arrives to add Officers, it adds only the values of the first element of the Official. And there are 4 Officials and ends up making 4 add but with the same values as the first element in Officials.
I think I'm wrong in the Xpath of the Staff because only in the XPath of the Staff have to put it with the path of the other nodes. If it does 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();