Como ler XML em C #

Como Ler Xml Em C



O formato de dados amplamente utilizado para compartilhamento de dados na Internet é o XML, pois os dados podem ser armazenados nele e trocados entre sistemas de maneira flexível e amigável. Em C#, a leitura de arquivos XML é uma tarefa comum, e a estrutura .NET fornece várias classes e métodos para análise e leitura de arquivos XML. Esta postagem abordará a utilização do .NET framework para ler XML em C#.

Lendo XML em C#

Existem várias formas de ler um arquivo XML em C# e cada método tem suas vantagens e desvantagens, sendo que a escolha depende dos requisitos do projeto. Abaixo estão algumas maneiras de ler um arquivo XML em C#:

Segue o conteúdo do arquivo XML que criei e será utilizado para demonstração nos próximos métodos:







< ?xml versão = '1,0' codificação = 'utf-8' ? >
< funcionários >
< funcionário >
< eu ia > 1 eu ia >
< nome > Sam bosh nome >
< departamento > Marketing departamento >
< salário > 50000 salário >
funcionário >
< funcionário >
< eu ia > 2 eu ia >
< nome > Jane Doe nome >
< departamento > Finança departamento >
< salário > 60000 salário >
funcionário >
< funcionário >
< eu ia > 3 eu ia >
< nome > James nome >
< departamento > Recursos Humanos departamento >
< salário > 70000 salário >
funcionário >
funcionários >

1: Usando XmlDocument

Para ler um arquivo XML em C#, você pode usar a classe XmlDocument ou a classe XDocument, ambas fazem parte do namespace System.Xml. A classe XmlDocument fornece uma abordagem DOM (Document Object Model) para leitura de XML, enquanto a classe XDocument fornece uma abordagem LINQ (Language-Integrated Query). Aqui está um exemplo utilizando a classe XmlDocument para ler um arquivo XML:



usando Sistema;
usando System.Xml;

programa de classe
{
vazio estático Principal ( corda [ ] argumentos )
{
XmlDocument doc = novo XmlDocument ( ) ;
doc.Load ( 'funcionários.xml' ) ;

Nós XmlNodeList = doc.DocumentElement.SelectNodes ( '/funcionários/funcionário' ) ;

para cada ( Nó XmlNode em nós )
{
corda eu ia = node.SelectSingleNode ( 'eu ia' ) .InnerText;
string name = node.SelectSingleNode ( 'nome' ) .InnerText;
string departamento = node.SelectSingleNode ( 'departamento' ) .InnerText;
string salario = node.SelectSingleNode ( 'salário' ) .InnerText;
Console.WriteLine ( 'ID: {0}, Nome: {1}, Departamento: {2}, Salário: {3}' , eu ia , nome, departamento, salário ) ;
}
}
}

Esse código usa a classe XmlDocument para carregar o arquivo XML e o método SelectNodes para recuperar uma lista de nós de funcionários. Em seguida, para cada nó de funcionário, ele usa o método SelectSingleNode para recuperar os valores dos nós filho id, nome, departamento e salário e os exibe usando Console.WriteLine:







2: Usando XDocument

Alternativamente, você também pode usar a classe XDocument para ler um arquivo XML usando uma abordagem LINQ, e abaixo está o código que ilustra como fazer isso:

usando Sistema;

programa de classe
{
vazio estático Principal ( corda [ ] argumentos )
{
XDocument doc = XDocument.Load ( 'funcionários.xml' ) ;

para cada ( elemento XElement em doc. Descendentes ( 'funcionário' ) )
{
int eu ia = int.Parse ( elemento.Elemento ( 'eu ia' ) .Valor ) ;
string nome = elemento.Elemento ( 'nome' ) .Valor;
string departamento = elemento.Elemento ( 'departamento' ) .Valor;
int salário = int.Parse ( elemento.Elemento ( 'salário' ) .Valor ) ;
Console.WriteLine ( $ 'ID: {id}, Nome: {name}, Departamento: {department}, Salário: {salary}' ) ;
}
}
}

O arquivo XML é carregado em um objeto XDocument usando o método XDocument.Load. Os elementos “employee” do arquivo XML são todos recuperados usando a técnica Descendants. Para cada elemento, seus elementos filhos são acessados ​​usando o método Element e seus valores são extraídos usando a propriedade Value. Finalmente, os dados extraídos são impressos no console.



Observe que XDocument pertence ao namespace System.Xml.Linq, então você precisa incluir a seguinte instrução using na parte superior do seu arquivo C#

3: Usando XmlReader

XmlReader é uma maneira rápida e eficiente de ler um arquivo XML em C#. Ele lê o arquivo sequencialmente, o que significa que carrega apenas um nó por vez, tornando-o ideal para trabalhar com grandes arquivos XML que, de outra forma, seriam difíceis de manipular na memória.

usando Sistema;
usando System.Xml;

programa de classe
{
vazio estático Principal ( corda [ ] argumentos )
{
usando ( Leitor XmlReader = XmlReader.Create ( 'funcionários.xml' ) )
{
enquanto ( leitor.Leia ( ) )
{
se ( reader.NodeType == XmlNodeType.Element && leitor.Nome == 'funcionário' )
{
Console.WriteLine ( 'EU IA: ' + leitor.GetAttribute ( 'eu ia' ) ) ;
leitor.ReadToDescendant ( 'nome' ) ;
Console.WriteLine ( 'Nome: ' + leitor.ReadElementContentAsString ( ) ) ;
leitor.ReadToNextSibling ( 'departamento' ) ;
Console.WriteLine ( 'Departamento: ' + leitor.ReadElementContentAsString ( ) ) ;
leitor.ReadToNextSibling ( 'salário' ) ;
Console.WriteLine ( 'Salário: ' + leitor.ReadElementContentAsString ( ) ) ;
}
}
}
}
}

Neste exemplo, usamos um método XmlReader.Create para criar uma instância de XmlReader e passar o caminho do arquivo XML como parâmetro. Em seguida, usamos um loop while para ler o arquivo XML, nó por nó, usando o método Read de XmlReader.

Dentro do loop, primeiro verificamos se o nó atual é um elemento empregado usando as propriedades NodeType e Name de XmlReader. Nesse caso, empregamos o método GetAttribute para recuperar o valor do atributo id.

Em seguida, usamos o método ReadToDescendant para mover o leitor para o elemento name dentro do elemento employee. O valor do elemento name é então obtido usando a função ReadElementContentAsString.

Da mesma forma, usamos o método ReadToNextSibling para mover o leitor para o próximo elemento irmão e obter o valor dos elementos departamento e salário.

Por fim, usamos using block para garantir que o objeto XmlReader seja descartado corretamente após terminarmos a leitura do arquivo XML:

4: XML para LINQ

A leitura de um arquivo XML usando LINQ to XML em C# é uma maneira poderosa de acessar e manipular dados XML. LINQ to XML é um componente da tecnologia LINQ que fornece uma API simples e eficiente para trabalhar com dados XML.

usando Sistema;
usando System.Linq;
usando System.Xml.Linq;

programa de classe
{
vazio estático Principal ( corda [ ] argumentos )
{
XDocument doc = XDocument.Load ( 'funcionários.xml' ) ;

var funcionários = de e em doc. Descendentes ( 'funcionário' )
selecionar novo
{
Id = e.Elemento ( 'eu ia' ) .Valor,
Nome = e.Elemento ( 'nome' ) .Valor,
Departamento = e.Elemento ( 'departamento' ) .Valor,
Salário = e. Elemento ( 'salário' ) .Valor
} ;
para cada ( empregado var em funcionários )
{
Console.WriteLine ( $ 'Id: {employee.Id}, Nome: {employee.Name}, Departamento: {employee.Department}, Salário: {employee.Salary}' ) ;
}
}
}

Neste código, primeiro carregamos o arquivo XML usando o método XDocument.Load(). Em seguida, usamos o LINQ to XML para consultar os dados XML e selecionar os elementos id, nome, departamento e salário para cada elemento funcionário. Armazenamos esses dados em um tipo anônimo e, em seguida, percorremos os resultados para imprimir as informações do funcionário no console.

5: Usando XPath

XPath é uma linguagem de consulta usada para navegar por um documento XML para localizar elementos, atributos e nós específicos. É uma ferramenta eficaz para pesquisa e filtragem de informações em um documento XML. Em C#, podemos usar a linguagem XPath para ler e extrair dados de arquivos XML.

usando Sistema;
usando System.Xml.XPath;
usando System.Xml;

programa de classe
{
vazio estático Principal ( corda [ ] argumentos )
{
XmlDocument doc = novo XmlDocument ( ) ;
doc.Load ( 'funcionários.xml' ) ;

// Crie um XPathNavigator a partir do documento
XPathNavigator nav = doc.CreateNavigator ( ) ;

// Compilar a expressão XPath
XPathExpression expr = nav.Compile ( '/funcionários/funcionário/nome' ) ;

// Avalie a expressão e repita os resultados
XPathNodeIterator iterador = nav.Select ( expr ) ;
enquanto ( iterator.MoveNext ( ) )
{
Console.WriteLine ( iterator.Current.Value ) ;
}
}
}

Esse código carrega o arquivo “employees.xml” usando um XmlDocument, cria um XPathNavigator a partir do documento e compila uma expressão XPath para selecionar todos os elementos sob os elementos . Em seguida, ele avalia a expressão e itera pelos resultados, imprimindo o valor de cada elemento .

Observação: usar XPath pode ser uma maneira poderosa e flexível de selecionar elementos e atributos de um documento XML, mas também pode ser mais complexo do que alguns dos outros métodos que discutimos.

Conclusão

O uso da classe XmlDocument fornece recursos completos de manipulação de DOM, mas pode ser mais lento e consumir mais memória do que os outros métodos. A classe XmlReader é uma boa opção para ler arquivos XML grandes, pois fornece uma abordagem baseada em fluxo rápida, somente de encaminhamento e sem cache. A classe XDocument fornece uma sintaxe mais simples e concisa, mas pode não ser tão eficiente quanto XmlReader. Além disso, os métodos LINQ to XML e XPath fornecem recursos de consulta poderosos para extrair dados específicos de um arquivo XML.