Trabalho com XML em C# (.NET): Guia Completo

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalho com XML em C# (.NET): Guia Completo



XML (eXtensible Markup Language) continua sendo um dos principais formatos para armazenamento e transmissão de dados estruturados no ecossistema .NET. Em C#, existem várias bibliotecas e abordagens poderosas para trabalhar com XML, desde o clássico XmlDocument até o moderno LINQ to XML. Neste artigo, abordaremos as principais ferramentas, suas características e forneceremos exemplos práticos para tarefas reais.



1. Principais bibliotecas para trabalhar com XML no .NET



A plataforma .NET oferece aos desenvolvedores várias APIs para processamento de XML:



  • System.Xml (XmlDocument, XmlReader, XmlWriter) — abordagem clássica DOM (Document Object Model). Permite carregar todo o documento XML na memória e trabalhar com ele como uma árvore de nós.
  • LINQ to XML (XDocument, XElement, XAttribute) — API moderna, mais leve e conveniente, integrada ao LINQ. Recomendado para a maioria dos novos projetos.
  • XmlSerializer — para serialização e desserialização automática de objetos C# para XML e vice-versa.
  • XPath (SelectSingleNode, SelectNodes) — linguagem de consulta para navegação em documentos XML. Suportado tanto no XmlDocument quanto no XDocument (através de extensões).


2. LINQ to XML: abordagem moderna



A biblioteca System.Xml.Linq (LINQ to XML) é a escolha preferida para trabalhar com XML em C#. Ela oferece sintaxe limpa, carregamento leve e suporte a consultas LINQ.



Criação de documento XML

using System.Xml.Linq;

XDocument doc = new XDocument( new XDeclaration("1.0", "utf-8", "yes"), new XElement("books", new XElement("book", new XAttribute("id", "1"), new XElement("title", "Guerra e Paz"), new XElement("author", "Liev Tolstói"), new XElement("price", 599.99m) ), new XElement("book", new XAttribute("id", "2"), new XElement("title", "Crime e Castigo"), new XElement("author", "Fiódor Dostoiévski"), new XElement("price", 450.00m) ) ));

doc.Save("books.xml");


Carregamento e leitura de XML

XDocument loadedDoc = XDocument.Load("books.xml");

// Obtendo todos os livrosvar allBooks = loadedDoc.Descendants("book");

foreach (var book in allBooks){ string id = book.Attribute("id")?.Value; string title = book.Element("title")?.Value; string author = book.Element("author")?.Value; Console.WriteLine($"Livro #{id}: {title} — {author}");}


Consultas com LINQ

// Selecionando livros mais caros que 500 reaisvar expensiveBooks = from book in loadedDoc.Descendants("book")                     where (decimal)book.Element("price") > 500                     select new                     {                         Title = (string)book.Element("title"),                         Price = (decimal)book.Element("price")                     };

foreach (var b in expensiveBooks){ Console.WriteLine($"{b.Title}: {b.Price} reais.");}


3. XmlDocument clássico



Se você está trabalhando com código legado ou precisa de controle total sobre o DOM, use XmlDocument do namespace System.Xml.



Carregamento e navegação

using System.Xml;

XmlDocument xmlDoc = new XmlDocument();xmlDoc.Load("books.xml");

XmlNode root = xmlDoc.DocumentElement;XmlNodeList bookNodes = root.SelectNodes("book");

foreach (XmlNode node in bookNodes){ XmlNode titleNode = node.SelectSingleNode("title"); if (titleNode != null) { Console.WriteLine(titleNode.InnerText); }}


Adicionando um novo nó

XmlNode newBook = xmlDoc.Cre                    

Recommendations