LINQ - Validando arquivo XML com Regex
Neste artigo vou mostrar como podemos validar um arquivo XML usando expressões regulares com a LINQ e a linguagem C#. |
Podemos usar todos os recursos do LINQ e aplicar filtros usando expressões regulares para formatar e validar resultados.
Como exemplo vamos validar um arquivo XML onde temos os elementos nome e telefone.
Para isso vamos definir uma expressão regular para validar o número do telefone e exibir se o mesmo é válido (true) ou não (false).
Vamos usar como exemplo o seguinte arquivo XML chamado Clientes.xml:
<?xml version="1.0" encoding="utf-8" ?>
<clientes>
<cliente id="1">
<nome>Macoratti</nome>
<Telefone>014-4604121</Telefone>
</cliente>
<cliente id="2">
<nome>Jessica</nome>
<Telefone>021-5518221</Telefone>
</cliente>
<cliente id="3">
<nome>Jefferson</nome>
<Telefone>#4abc</Telefone>
</cliente>
</clientes>
|
Recursos Usados:
Criando o projeto Windows Forms
Abra o VS 2017 Community e crie um projeto usando o template Windows Classic Desktop -> Windows Forms App com o nome Linq_XML_Regex;
No formulário form1.cs padrão inclua os controles :
Definindo o código do formulário
Defina no formulário uma método estático onde vamos definir a expressão regular que vai validar o telefone para o elemento do XML:
static XElement VerificaTelefone(string phone)
{
Regex regex = new Regex("([0-9]{3}-)|('('[0-9]{3}')')[0-9]{3}-[0-9]{4}");
return new XElement("isValidTelefone", regex.IsMatch(phone));
}
|
No evento Click do botão - btnCarregarXML - temos o código que vai apenas exibir o XML no TextBox - txtDados:
private void btnCarregarXML_Click(object sender, EventArgs e)
{
try
{
XElement dadosXML = XElement.Load(@"c:\dados\Clientes.xml");
txtDados.Text = dadosXML.ToString();
btnValidarXML.Enabled = true;
}
catch (Exception ex)
{
MessageBox.Show("Erro ao carregar XML : " + ex.Message);
}
}
|
Neste código estamos apenas carregando arquivo Clientes.xml que esta na pasta c:\dados exibindo-o no TextBox - txtDados.
No evento Click do botão - btnValidarXML - temos o código que vai usar o método estático VerificaTelefone e vai validar o elemento <Telefone> do arquivo XML:
private void btnValidarXML_Click(object sender, EventArgs e)
{
try
{
XDocument doc = XDocument.Load(@"c:\dados\Clientes.xml");
this.Width = 990;
this.Height = 438;
var query =
from cliente in doc.Descendants("cliente")
select
new XElement("cliente",
cliente.Descendants("nome").First(),
cliente.Descendants("Telefone").First(),
VerificaTelefone((string)cliente.Descendants("Telefone").First()));
foreach (var objElement in query)
{
txtXML.Text = "Nome do Cliente : " + objElement.Element("nome").Value + "\r\n";
txtXML.Text += "Telefone: " + objElement.Element("Telefone").Value + "\r\n";
txtXML.Text += "Telefone válido ? : " + objElement.Element("isValidTelefone").Value + "\r\n";
}
}
catch (Exception ex)
{
MessageBox.Show("Erro : " + ex.Message);
}
}
|
Vamos exibir o resultado da validação no TextBox - txtXML.
Agora é só alegria...
Executando o projeto teremos o seguinte resultado:
Essa é apenas uma 'desgutação' das possibilidades da utilização de expressões regulares com consultas LINQ para validar dados.
Pegue o projeto aqui : LinqXML_Regex.zip (sem as referências)
"Porque Deus amou o mundo de tal maneira
que deu o seu Filho unigênito, para que todo aquele que nele crê não pereça, mas
tenha a vida eterna."
João
3:16
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
C# - Salvando e Lendo informações em um arquivo XML - Macoratti