Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

los5884

Ler e inserir dados dum XML usado C#

Mensagens Recomendadas

los5884

Boa tarde,

Será que alguém me pode ajudar com uma dúvida?

Tenho um xml deste genro (só com muitos mais registos LOL)

<pessoa>
<nome>João<nome>
<idade>26<idade>
<sexo>M<sexo>
...
</pessoa>
<pessoa>
<nome>Maria<nome>
<idade>18<idade>
<sexo>F<sexo>
...
</pessoa>
<pessoa>
<nome>Paulo<nome>
<idade>22<idade>
<sexo>M<sexo>
...
</pessoa>

Estou a usar C# para ler esse XML e inseri-los num sql. O que eu gostava é que quando começasse a ler cada Node <pessoa> criasse um registo novo para cada um com os respectivos dados, e fazer isso para cada Node <pessoa> que existe no XML.

O meu problema é que me esta a inserir vários registos de cada node. Tipo se eu tiver um Node <pessoa> com X elementos ele inserir X registos (repete os dados).

O codigo C# esta mais ou menos assim

XmlTextReader rdrXml = new XmlTextReader(@"C:\\ap_example.xml");
while (rdrXml.Read())
                    {                        
                             if (rdrXml.Name == "pessoa")

                            {
                                   Console.WriteLine("\n--------------------------- Novo Registo -------------------------------");
                            } 

                            if (rdrXml == "nome")
                            {
                                reader.Read();
                               Console.WriteLine("\n----->nome---->" + reader.Value);
                            }
                            if (rdrXml == "idade")
                            {
                                reader.Read();
                               Console.WriteLine("\n----->idade---->" + reader.Value);
                            }
                            if (rdrXml == "sexo")
                            {
                                reader.Read();
                               Console.WriteLine("\n----->sexo---->" + reader.Value);
                            }
                        funcoes.inserir_pessoas
                    }

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
los5884

Encontrei uma forma de resolver esta situação. Aqui fica a minha solução caso algum venha a ter o mesmo problema. É criar um foreach e depois dentro desse foreach chamar cada node

exemplo:

foreach (XmlNode node in rdrXml.SelectNodes("pessoas/pessoa"))
{

}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.