2
Hello folks I’m having a question to display the data of a file XML through a consultation LINQ , the problem is that I am trying to consult the data of the person but the mandatory filling and name and CPF or CNPJ so in some cases there are no records of Endereço
and Contato
then the exception Nullreferenceexception and launched how I can solve this ?
Structure of the xml File
<!--<?xml version="1.0" encoding="utf-8"?>-->
<Lista>
<Pessoa>
<CpfCnpj></CpfCnpj> <!-- Preenchimento Obrigatorio -->
<Nome></Nome> <!-- Preenchimento Obrigatório -->
<Endereco>
<Endereco></Endereco>
<Numero></Numero>
<Complemento>;</Complemento>
<Bairro></Bairro>
<Cidade></Cidade>
<Uf></Uf>
<Cep></Cep>
</Endereco>
<Contato>
<Telefone></Telefone>
<Email></Email>
</Contato>
</Pessoa>
</Lista>
Query LINQ TO XML
static void Main(string[] args)
{
//Carrega Aquivo
XDocument xmldoc = XDocument.Load("Database.xml");
var ConsutarPessoas = from p in xmldoc.Descendants("Pessoa")
select new
{
CpfCnpj = p.Element("CpfCnpj").Value,
Nome = p.Element("Nome").Value,
Endereco = p.Element("Endereco").Element("Endereco").Value,
Numero = p.Element("Endereco").Element("Numero").Value,
Complemento = p.Element("Endereco").Element("Complemento").Value,
Bairro = p.Element("Endereco").Element("Bairro").Value,
Cidade = p.Element("Endereco").Element("Cidade").Value,
Uf = p.Element("Endereco").Element("Endereco").Value,
Cep = p.Element("Endereco").Element("Uf").Value,
Telefone = p.Element("Contato").Element("Telefone").Value,
Email = p.Element("Contato").Element("Email").Value,
};
//Exibir dados das pessoas
foreach (var PessoaRerefenciada in ConsutarPessoas)
{
Console.WriteLine(PessoaRerefenciada.CpfCnpj);
Console.WriteLine(PessoaRerefenciada.Nome);
Console.WriteLine(PessoaRerefenciada.Endereco);
Console.WriteLine(PessoaRerefenciada.Complemento);
Console.WriteLine(PessoaRerefenciada.Numero);
Console.WriteLine(PessoaRerefenciada.Bairro);
Console.WriteLine(PessoaRerefenciada.Cidade);
Console.WriteLine(PessoaRerefenciada.Cep);
Console.WriteLine(PessoaRerefenciada.Telefone);
Console.WriteLine(PessoaRerefenciada.Email);
Console.WriteLine("----------------------");
}
Console.ReadKey();
}
Obs : I know I can build a better structure but in this case I can’t make any modifications .
See if the p.Element ("Address") element has value before accessing its "Value".. Type p.Element("Address") != null ? p.Element("Address"). Element("City") != null ? p.Element("Address"). Element("City"). Value : "" : "";
– Marco Souza
Tests if it is null before. Address = p.Element("Address"). Element("Address"). Value == null ? "" p.Element("Address"). Element("Address"). Value
– JcSaint