.NET
Validando SCHEMA XML usando XSD e C#
Mais um problema recorrente. Normalmente temos que gerar ou enviar XML para clientes com a informação de nossos CRMs. Isso costuma causar alguma dor de cabeça quando não se tem um arquivo XSD com o SCHEMA que deve ser seguido pelo XML.
Pensando nisso, preparei esse código que é para ser aplicado em uma aplicação winforms, com 2 inputs, um arquivo XSD e um XML e o output vai para um TXT multiline. Espero que ajude.
Para começar, você precisará criar um novo projeto WinForms no Visual Studio. Em seguida, adicione os seguintes controles ao seu formulário: dois botões (um para selecionar o arquivo XSD e outro para selecionar o arquivo XML), um controle TextBox para exibir o resultado da validação e um controle OpenFileDialog para permitir ao usuário selecionar os arquivos.
Em seguida, você precisará adicionar as seguintes bibliotecas ao seu projeto:
using System;
using System.IO;
using System.Xml;
using System.Xml.Schema;
A primeira biblioteca é necessária para trabalhar com arquivos e diretórios. As outras duas bibliotecas são usadas para validar o arquivo XML com o arquivo XSD.
Abaixo está o código completo para a aplicação:
using System;
using System.IO;
using System.Xml;
using System.Xml.Schema;
using System.Windows.Forms;
namespace ExemploValidacaoXML
{
public partial class Form1 : Form
{
private OpenFileDialog openFileDialog1 = new OpenFileDialog();
private OpenFileDialog openFileDialog2 = new OpenFileDialog();
public Form1()
{
InitializeComponent();
openFileDialog1.Filter = "XSD files (*.xsd)|*.xsd";
openFileDialog2.Filter = "XML files (*.xml)|*.xml";
}
private void button1_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
textBox1.Text = openFileDialog1.FileName;
}
}
private void button2_Click(object sender, EventArgs e)
{
if (openFileDialog2.ShowDialog() == DialogResult.OK)
{
textBox2.Text = openFileDialog2.FileName;
}
}
private void button3_Click(object sender, EventArgs e)
{
try
{
string xsdPath = textBox1.Text;
string xmlPath = textBox2.Text;
string validationMessage = string.Empty;
// Load the XSD schema.
XmlSchemaSet schemaSet = new XmlSchemaSet();
schemaSet.Add(null, xsdPath);
// Load the XML file.
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.Schemas = schemaSet;
// Set the validation event handler.
settings.ValidationEventHandler += new ValidationEventHandler(ValidationEventHandler);
// Create the XmlReader object.
XmlReader reader = XmlReader.Create(xmlPath, settings);
// Read the XML file.
while (reader.Read()) { }
if (string.IsNullOrEmpty(validationMessage))
{
validationMessage = "O arquivo XML é válido de acordo com o esquema XSD especificado.";
}
textBox3.Text = validationMessage;
}
catch (Exception ex)
{
textBox3.Text = ex.Message;
}
}
private void ValidationEventHandler(object sender, ValidationEventArgs e)
{
if (e.Severity == XmlSeverityType.Error)
{
textBox3.Text += "Erro: " + e.Message + Environment.NewLine;
}
else
{
textBox3.Text += "Aviso: " + e.Message + Environment.NewLine;
}
}
}
}
Explicação do código:
- No construtor do formulário, definimos o filtro de arquivos para cada controle OpenFileDialog. O primeiro controle OpenFileDialog é usado para selecionar o arquivo XSD e o segundo é usado para selecionar o arquivo XML.
- No evento Click do botão “Selecionar XSD”, definimos o texto do controle TextBox1 com o caminho do arquivo XSD selecionado pelo usuário.
- No evento Click do botão “Selecionar XML”, definimos o texto do controle TextBox2 com o caminho do arquivo XML selecionado pelo usuário.
- No evento Click do botão “Validar”, carregamos o esquema XSD e o arquivo XML e executamos a validação. Para carregar o esquema XSD, criamos um objeto XmlSchemaSet e adicionamos o arquivo XSD especificado pelo usuário. Para carregar o arquivo XML, criamos um objeto XmlReaderSettings e definimos a propriedade ValidationType como “Schema” e a propriedade Schemas como o XmlSchemaSet que acabamos de criar. Em seguida, definimos o manipulador de eventos ValidationEventHandler para lidar com erros e avisos de validação.
- Quando a validação é concluída, verificamos se há mensagens de validação. Se não houver mensagens, definimos a mensagem “O arquivo XML é válido de acordo com o esquema XSD especificado.” no controle TextBox3. Caso contrário, definimos as mensagens de validação no controle TextBox3.
- Finalmente, criamos o método ValidationEventHandler para manipular erros e avisos de validação. Se a gravidade do erro for XmlSeverityType.Error, adicionamos uma mensagem de erro ao controle TextBox3. Caso contrário, adicionamos uma mensagem de aviso.
- Espero que este exemplo seja útil para você. Se tiver alguma dúvida, não hesite em perguntar.
Ajudou a você ? deixe um cometário! Obrigado.
.NET
Microsoft está oferecendo cursos gratuitos com certificado!
🚨🥁 A Microsoft está oferecendo cursos GRATUITOS com certificados. Não esqueça de compartilhar e ajudar alguém 👍🏼🚀😀
(Lembre-se, é um certificado, não uma certificação)! 😀
🌐 Microsoft Azure Fundamentals
- AZ-900
- 24-Hour
- Link: https://lnkd.in/d6Xnvn_a
🌐 Microsoft Azure Administrator
- AZ-104
- 96-Hour
- Link: https://lnkd.in/dyYZaDqH
🌐 Developing Solutions for Microsoft Azure
- AZ-204
- 120-Hour
- Course Link: https://lnkd.in/daGp_ZqN
🌐 Designing Microsoft Azure Infrastructure Solutions
- AZ-305
- 96-Hour
- Link: https://lnkd.in/d3bCnx2t
🌐 Designing and Implementing Microsoft DevOps solutions
- Course AZ-400
- 96-Hour Course
- Course Link: https://lnkd.in/dGej85sS
🌐 Microsoft Azure Data Fundamentals
- Course DP-900
- 24-Hour Course
- Course Link: https://lnkd.in/d2t4Jz6i
🌐 Microsoft Azure Al Fundamentals
- Course Al-900
- 24-Hour Course
- Course Link https://lnkd.in/d8DEgKiJ
🌐Designing and Implementing a Microsoft Azure Al Solution
- Course Al-102
- 96-Hour Course
- Course Link: https://lnkd.in/d_QBZtHa
🌐 Develop Generative Al Solutions with Azure OpenAl Service
- Course Al-050
- 24-Hour Course
- Course Link: https://lnkd.in/ddf28zBD
🌐 Microsoft Security, Compliance, and Identity Fundamentals
- Course SC-900
- 24-Hour Course
- Course Link: https://lnkd.in/dmzUN3jS
🌐 Microsoft Security Operations Analyst
- Course SC-200
- 96-Hour Course
- Course Link: https://lnkd.in/dTUt7C7P
🌐 Microsoft Cybersecurity Architect
- Course SC-100
- 96-Hour Course
- Course Link: https://lnkd.in/dK5Nw2Qa
🌐 Microsoft Azure Security Technologies
- Course AZ-500
- 96-Hour Course
- Course Link: https://lnkd.in/dSfKTws5
🌐 Designing and Implementing Microsoft Azure Networking Solutions
- Course AZ-700
- 72-Hour Course
- Link: https://lnkd.in/dEKyyz5Y
🌐 Data Engineering on Microsoft Azure
- Course DP-203
- 96-Hour Course
- Link: https://lnkd.in/damz4ewp
🌐 Designing and implementing a data science solution on Azure
- Course DP-100
- 96-Hour Course
- Link: https://lnkd.in/dedSYpEN
🌐 Administering Microsoft Azure SQL Solutions
- Course DP-300
- 96-Hour Course
- Link: https://lnkd.in/dREpV56r
FreeCourses #microsoft #azure #cloud #Upskill #MicrosoftAzure #ITCareer #Cybersecurity #Opportunity #CareerDevelopment #LearningResources #ShareKnowledge #free #certification #certificacao
.NET
O .NET 8: Descubra as Incríveis Novidades do .NET 8 que Vão Revolucionar Seu Desenvolvimento!
O .NET 8 oferece uma gama de novos recursos e melhorias que tornam a plataforma ainda mais robusta e eficiente. Com aprimoramentos no C#, suporte avançado para desenvolvimento full-stack com Blazor, a introdução do .NET MAUI, melhorias de performance, atualizações no ASP.NET Core e suporte ao HTTP/3, o .NET 8 está bem equipado para enfrentar as demandas de desenvolvimento moderno. Desenvolvedores podem esperar uma experiência mais fluida, rápida e integrada, seja na criação de aplicações web, desktop ou mobile.
O .NET 8, lançado pela Microsoft, traz uma série de inovações e melhorias que visam aumentar a produtividade dos desenvolvedores, melhorar a performance das aplicações e expandir a versatilidade da plataforma. A seguir, vamos explorar algumas das principais novidades e fornecer exemplos práticos de como essas mudanças podem ser aplicadas.
Principais Novidades do .NET 8
1. Aprimoramentos no C# 12
O .NET 8 inclui a versão mais recente do C#, o C# 12, que apresenta várias melhorias e novos recursos. Dentre os destaques, temos:
- Primary Constructors para Structs e Classes: Simplifica a definição de construtores para structs e classes.
- Default Interpolated Strings: Torna a interpolação de strings mais flexível e poderosa.
public struct Pessoa(string nome, int idade);
var pessoa = new Pessoa("Alice", 30);
Console.WriteLine($"Nome: {pessoa.nome}, Idade: {pessoa.idade}");
2. Blazor Full-Stack
O Blazor, a tecnologia de construção de interfaces web interativas utilizando C#, agora suporta full-stack development. Isso significa que os desenvolvedores podem criar tanto o front-end quanto o back-end usando Blazor, proporcionando uma experiência de desenvolvimento mais coesa.
@page "/contador"
@code {
private int contador = 0;
private void IncrementarContador() => contador++;
}
<button @onclick="IncrementarContador">Clique me: @contador</button>
3. MAUI (Multi-platform App UI)
O .NET MAUI é a evolução do Xamarin.Forms e permite a criação de aplicações multi-plataforma (iOS, Android, Windows, macOS) com um único código-base.
public class App : Application
{
public App()
{
MainPage = new ContentPage
{
Content = new StackLayout
{
Children = {
new Label { Text = "Bem-vindo ao .NET MAUI!" }
}
}
};
}
}
4. Melhorias de Performance
O .NET 8 continua a tradição de aprimorar a performance da plataforma. Algumas melhorias incluem otimizações no JIT (Just-In-Time) compiler, melhorias na alocação de memória e novos recursos no runtime que reduzem o overhead das aplicações.
5. Atualizações no ASP.NET Core
O ASP.NET Core, framework para construção de aplicações web e APIs, recebeu várias melhorias no .NET 8:
- Minimal APIs com mais funcionalidades: Inclui mais suporte para autenticação e autorização, e melhores ferramentas de depuração.
- Novo sistema de autenticação: Simplifica a configuração de autenticação em aplicações web.
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/saudacao", () => "Olá, Mundo!");
app.Run();
6. Suporte ao HTTP/3
O .NET 8 traz suporte aprimorado ao HTTP/3, permitindo a construção de aplicações que se beneficiam das melhorias de performance e segurança do novo protocolo.
7. Hot Reload
A funcionalidade de Hot Reload permite que os desenvolvedores façam mudanças no código durante a execução da aplicação, e essas mudanças são refletidas instantaneamente, sem a necessidade de recompilar ou reiniciar a aplicação.
Exemplo:
Alterações em uma aplicação Blazor são aplicadas instantaneamente durante a execução:
<h1>Hello, world!</h1>
<p>Bem-vindo ao uso de Hot Reload no Blazor!</p>
Conclusão
O .NET 8 oferece uma gama de novos recursos e melhorias que tornam a plataforma ainda mais robusta e eficiente. Com aprimoramentos no C#, suporte avançado para desenvolvimento full-stack com Blazor, a introdução do .NET MAUI, melhorias de performance, atualizações no ASP.NET Core e suporte ao HTTP/3, o .NET 8 está bem equipado para enfrentar as demandas de desenvolvimento moderno. Desenvolvedores podem esperar uma experiência mais fluida, rápida e integrada, seja na criação de aplicações web, desktop ou mobile.
.NET
A Microsoft está oferecendo cursos de certificação GRATUITOS!
A Microsoft está oferecendo cursos de certificação GRATUITOS!
Sem taxa, sem assinatura, sem necessidade de registro, basta começar a aprender. Esses cursos incluem palestras em vídeo, tutoriais e notas fáceis. Conheça os seguintes cursos gratuitos.
1. Fundamentos do Microsoft Azure
– Curso AZ-900T00
– Curso de 24 horas
– Link do curso: https://lnkd.in/dtYedpnZ
2. Desenvolvendo soluções para Microsoft Azure
– Curso AZ-204T00
– Curso de 120 horas
– Link do curso: https ://lnkd.in/dzVWhp7u
3. Administrador do Microsoft Azure
– Curso AZ-104T00
– Curso de 96 horas
– Link do curso: https://lnkd.in/djrYxCqW
4. Configurando e operando o Microsoft Azure Virtual Desktop
– Curso AZ-140
– Curso de 96 horas
– Link do curso: https://lnkd.in/dsd5CPJy
5. Projetando soluções de infraestrutura Microsoft Azure
– Curso AZ-305T00
– Curso de 96 horas
– Link do curso: https://lnkd.in/dq28keX9
7. Fundamentos de dados do Microsoft Azure
– Curso DP-900T00
– Curso de 24 horas
– Link do curso: https://lnkd.in/dmtfCKHM
8. Fundamentos de IA do Microsoft Azure
– Curso AI-900T00
– Curso de 24 horas
– Link do curso: https:// lnkd.in/drnFx6qF
9. Projetando e implementando uma solução de IA do Microsoft Azure
– Curso AI-102T00
– Curso de 96 horas
– Link do curso: https://lnkd.in/dt_rFFgK
10. Desenvolva soluções de IA generativas com o serviço Azure OpenAI
– Curso AI-050T00
– Curso de 24 horas
– Link do curso: https://lnkd.in/dKNN3mph
11. Fundamentos de segurança, conformidade e identidade da Microsoft
– Curso SC-900T00
– Curso de 24 horas
– Link do curso: https://lnkd.in/dVWxqa_E
12. Engenharia de dados no Microsoft Azure
– Curso DP-203T00
– Curso de 96 horas
– Link do curso: https://lnkd.in/duKTsYMa
13. Analista de operações de segurança da Microsoft
– Curso SC-200T00
– Curso de 96 horas
– Link do curso: https://lnkd.in/du3d55NG
14. Projetando e implementando soluções de rede Microsoft Azure
– Curso AZ-700T00
– Curso de 72 horas
– Link do curso: https://lnkd.in/dgmBzYDS
15. Projetando e implementando uma solução de ciência de dados no Azure
– Curso DP-100T01
– Curso de 96 horas
– Link do curso: https://lnkd.in/dZ8WXxYx
#Segurança #Cibernética #Microsoft #DesenvolvimentodeCarreira #SegurançadaInformação #Cursos #nuvem #az900 #azure #carreiratech #techrecruiter
-
Az-9002 anos ago
AZ-900 tudo que você precisa saber para passar [Parte 1]
-
Artigos3 semanas ago
Explorando o Banco de Dados Sedna: Um Mergulho Profundo
-
.NET1 ano ago
Parse e TryParse em C#
-
.NET4 meses ago
O .NET 8: Descubra as Incríveis Novidades do .NET 8 que Vão Revolucionar Seu Desenvolvimento!
-
.NET12 meses ago
Controladores vs. APIs mínimas – Qual é o melhor?
-
Artigos2 anos ago
Criando Stored Procedures em SQL – Boas Práticas
-
.NET2 anos ago
Explorando o uso de variáveis dynamic no C#: boas práticas e exemplos de aplicação com JSON
-
Artigos1 ano ago
SOLID e boas práticas de programação usando .NET