Ir ao conteúdo
  • Cadastre-se

C# Como faço para "Contabilizar" os nós maiores de uma XML (XElement)


Posts recomendados

Opa, como vocês estão? Estou apreendendo C# por conta própria (depois de ser iniciado em programação em python na universidade).

Estou tentando criar 1 software que leia um arquivo XML e queria dividir o arquivo da mesma forma que a imagem a seguir.

22200549_SemTtulo-2.jpg.1b6f020f08e82cc2ddcd494ee9692737.jpg

No caso queria que "contasse" para cada nó maior "Customer". Para que futuramente caso eu queira imprimir o primeiro, segundo, terceiro. (Ficaria a escolha do usuário).

 

Bom estou tentando fazer isso usando "ArquivoXML".Descendent("Customer"). 

 

IEnumerable<XElement> items =
     from el in pu2.Descendants("Customer")  
     select el;
foreach (XElement el in items)
     {
      MessageBox.Show (el.ToString()); // No caso ele abre uma caixa mostrando todos o arquivo entre os Customer.
     }

 

A questão é que estou tentando de todos os jeito transformar/adquirir os valores da variável (XElement) em INT, so que não consigo :(.

Queria saber se estou usando o "IEnumerable" Corretamente, se deveria usar "List". Já pensei em transformar em texto e usar "ReadallLines" para pegar os arquivo em string. Porém acredito que exista uma forma melhor de fazer isso. 

 

Enfim quem puder me ajudar :) ou até poder falar um caminho, ou onde estou errando, enfim. 

Link para o comentário
Compartilhar em outros sites

Não sei se entendi o que você quer. Veja se o código abaixo te ajuda. 

Esse código usa LInq e Xml.Linq;

 

using System;
using System.Linq;
using System.Threading;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //le o xml
            XElement doc = XElement.Load(@"C:\Projects\Customers.xml");            
            
            //Separa os elementos do tipo Customer (dentro deles tem os filhos)
            var elemList = doc.Element("Customers").Elements("Customer");
            Console.WriteLine("Qtde Customer = " + elemList.Count().ToString());

            //cria um objeto de lista generica usando xml.Linq com os elementos separados
            var Elements = from c in elemList
            select new
            {
            CustomerID = (string)c.Attribute("CustomerID"),
            CompanyName = (string)c.Element("CompanyName"),
            Country = (string)c.Element("FullAddress").Element("Country")
            };

            //Agora esta fácil. É só listar os dados.
            foreach (var r in Elements)
                Console.WriteLine("CustomerID:{0} CompanyName:\"{1}\" Country:{2}", r.CustomerID, r.CompanyName, r.Country);
            Thread.Sleep(10000);

        }
    }
}

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...