none
ler arquivo xml e gravar no banco de dados RRS feed

  • Pergunta

  • Olá galera, estou com uma dificuldade para ler um arquivo xml pelo Web Service.

    Seguinte tenho um projeto na empresa onde deverei receber um arquivo xml e salvar os dados desse arquivo em uma base de dados (node por node).

    Estava buscando na internet como fazer isso mas não encontrei artigo que ajude, posso estar buscando de forma errada.

    Alguém sabe como fazer o Web Service receber um arquivo xml e salvar os dado na tabela ?

    Desde já agradeço pela atenção e ajuda !

    segunda-feira, 30 de março de 2015 18:24

Todas as Respostas

  • Voce precisa gravar O XML dentro da tabela ou apenas os dados de cada xml ?

    segunda-feira, 30 de março de 2015 18:39
  • Olá amigo, tudo bem!?

    Seguinte eu to estudando tratamento de XML também, e sei que a classe XmlReader do namespace System.Xml pode resolver seu problema. Segue um exemplo:

    Considere o XML:

    <?xml version="1.0" encoding="utf-8"?>
        <Cliente>
          <Idade>25</Idade>
          <Nome>Raimundo dos Santos Santana</Nome>
        </Cliente>

    O código que mapeia este XML:

        class Program
        {
            public class Cliente
            {
    
                public int idade;
                public string nome;
    
            }
    
            static void Main(string[] args)
            {
                //cria uma instancia de xmlreader ja recebendo seu arquivo xml
                XmlReader reader = XmlReader.Create("teste.xml");
    
                Cliente c = new Cliente();
    
                while (reader.Read())
                {
                    //verifica se o node é válido e se o seu nome é idade
                    if (reader.NodeType == XmlNodeType.Element && reader.Name == "Idade")
                    {
                        //armazena o valor do node idade no objeto cliente
                        c.idade = reader.ReadElementContentAsInt();
                    }
                    if (reader.NodeType == XmlNodeType.Element && reader.Name == "Nome")
                    {
                        c.nome = reader.ReadElementContentAsString();
                    }
                }
    
                Console.WriteLine("idade: {0} - Nome: {1}",c.idade,c.nome);
                Console.ReadKey();
    
                //imprime Idade: 25 - Nome: Raimundo Santana
            }
        }
    }

    A partir disso você consegue incluir no seu banco a partir da conexão padrão do seu projeto.


    segunda-feira, 30 de março de 2015 19:15
  • Olá amigo, tudo bem!?

    Seguinte eu to estudando tratamento de XML também, e sei que a classe XmlReader do namespace System.Xml pode resolver seu problema. Segue um exemplo:

    Considere o XML:

    <?xml version="1.0" encoding="utf-8"?>
        <Cliente>
          <Idade>25</Idade>
          <Nome>Raimundo dos Santos Santana</Nome>
        </Cliente>

    O código que mapeia este XML:

        class Program
        {
            public class Cliente
            {
    
                public int idade;
                public string nome;
    
            }
    
            static void Main(string[] args)
            {
                //cria uma instancia de xmlreader ja recebendo seu arquivo xml
                XmlReader reader = XmlReader.Create("teste.xml");
    
                Cliente c = new Cliente();
    
                while (reader.Read())
                {
                    //verifica se o node é válido e se o seu nome é idade
                    if (reader.NodeType == XmlNodeType.Element && reader.Name == "Idade")
                    {
                        //armazena o valor do node idade no objeto cliente
                        c.idade = reader.ReadElementContentAsInt();
                    }
                    if (reader.NodeType == XmlNodeType.Element && reader.Name == "Nome")
                    {
                        c.nome = reader.ReadElementContentAsString();
                    }
                }
    
                Console.WriteLine("idade: {0} - Nome: {1}",c.idade,c.nome);
                Console.ReadKey();
    
                //imprime Idade: 25 - Nome: Raimundo Santana
            }
        }
    }

    A partir disso você consegue incluir no seu banco a partir da conexão padrão do seu projeto.


    Muito, obrigado, ajudou bastante.

    Mas se eu tiver um nó que se repete varias vezes, como faria essa estrutura de repetição?

    quinta-feira, 7 de maio de 2015 17:13
  • Basta usar um foreach para ler todos os elementos

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    quinta-feira, 7 de maio de 2015 18:35
  • Caso tenha conseguido a solução finalize sua Thread marcando a resposta

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    domingo, 28 de junho de 2015 14:07