none
Ler XML e Salvar Nó e valor no BD RRS feed

  • Pergunta

  • Boa noite!

    Galera estou precisando de pegar o resultado de um XML e salvar o nome do NÓ e o valor dele no banco de dados.

    Ex. <nome>Rodrigo</nome>

    Quero pegar a tag nome e o valor Rodrigo.

    Segue o XML

    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
      <soap:Body>
        <ns2:recuperaDadosResponse xmlns:ns2="http://servico./" xmlns:ns3="http://servicos.integradorbr">
          <return>
            <cnpj/>
            <orgaoResponsavelDeferimento>AAA</orgaoResponsavelDeferimento>
            <numViabilidadeAssociada>MG123</numViabilidadeAssociada>
            <fcpj>
              <codEvento>101</codEvento>
              <nomeEmpresarial>JANUARIO GOMES</nomeEmpresarial>
              <nomeFantasia>PINTURAS TECNICAS</nomeFantasia>
              <codNaturezaJuridica>2135</codNaturezaJuridica>
              <codTipoOrgaoRegistro>1</codTipoOrgaoRegistro>
              <capitalSocial>00000001000000</capitalSocial>
              <nomeResponsavel>ANTONIO  GOMES</nomeResponsavel>
              <cpfResponsavel>123456789</cpfResponsavel>
              <codQualificResponsavel>50</codQualificResponsavel>
              <endereco>
                <cep>1122</cep>
                <uf>MG</uf>
                <codMunicipio>4687</codMunicipio>
                <codTipoLogradouro>R</codTipoLogradouro>
                <logradouro>JOAO </logradouro>
                <numLogradouro>318</numLogradouro>
                <bairro>N. S. APARECIDA</bairro>
                <distrito>318</distrito>
              </endereco>
              <contato>
                <dddTelefone1>34</dddTelefone1>
                <telefone1>123</telefone1>
                <dddTelefone2>34</dddTelefone2>
                <telefone2>11222</telefone2>
                <dddFax>34</dddFax>
                <fax>34115594</fax>
                <correioEletronico>MARIAN.COM.BR</correioEletronico>
              </contato>
              <caixaPostal>0</caixaPostal>
              <cepCaixaPostal>1234</cepCaixaPostal>
              <codPorteEmpresa>01</codPorteEmpresa>
              <codClassificCRCcontadorPF>1</codClassificCRCcontadorPF>
              <ufContadorPF>MG</ufContadorPF>
              <numSeqContadorPF>115080</numSeqContadorPF>
              <codTipoCRCcontadorPF>O</codTipoCRCcontadorPF>
              <cpfContadorPF>1111111111111</cpfContadorPF>
              <nomeContadorPF>MARIANA DINIZ</nomeContadorPF>
              <codClassificEmpresaContabil>1</codClassificEmpresaContabil>
              <inPermanencialivrosFiscais>S</inPermanencialivrosFiscais>
              <endResponsavel>
                <cep>111111</cep>
                <uf>MG</uf>
                <codMunicipio>4687</codMunicipio>
                <codTipoLogradouro>R</codTipoLogradouro>
                <logradouro>JOAO JOSE</logradouro>
                <numLogradouro>318</numLogradouro>
                <complementoLogradouro>CASA</complementoLogradouro>
                <bairro>N. S.</bairro>
              </endResponsavel>
              <contatoResponsavel>
                <dddTelefone1>34</dddTelefone1>
                <telefone1>96683234</telefone1>
                <dddFax>34</dddFax>
                <fax>34115594</fax>
                <correioEletronico>MARIANA.COM.BR</correioEletronico>
              </contatoResponsavel>
              <endContadorPf>
                <cep>1111</cep>
                <uf>MG</uf>
                <codMunicipio>111</codMunicipio>
                <codTipoLogradouro>AV</codTipoLogradouro>
                <logradouro>ALEXANDRITA</logradouro>
                <numLogradouro>1687</numLogradouro>
                <complementoLogradouro>TERREO</complementoLogradouro>
                <bairro>CENTRO</bairro>
              </endContadorPf>
              <contatoContadorPf>
                <dddTelefone1>34</dddTelefone1>
                <telefone1>111111111</telefone1>
                <dddFax>34</dddFax>
                <fax>111111</fax>
                <correioEletronico>MARIANA.COM.BR</correioEletronico>
              </contatoContadorPf>
            </fcpj>
            <atividadeEconomica>
              <codCnaeFiscal>2539002</codCnaeFiscal>
              <codCnaeSecundaria>4330401</codCnaeSecundaria>
              <codFormaDeAtuacao>01</codFormaDeAtuacao>
              <codTipoUnidade>00</codTipoUnidade>
              <objetoSocial>EM METAIS</objetoSocial>
            </atividadeEconomica>
          </return>
        </ns2:recuperaDadosResponse>
      </soap:Body>
    </soap:Envelope>
    Fiquem com Deus!


    Posso não concordar com o que vc disse, mas lutarei até a morte pelo seu direito de dizer...

    domingo, 4 de junho de 2017 04:42

Respostas

  • Rodrigo, 

    Seu XML não possui a tag <nome></nome> exatamente, mas o código funciona mesmo se mudar o nome da tag. Basta você utilizar expressão regular:

    using System;
    using System.Text.RegularExpressions;
    					
    public class Program
    {
    	public static void Main()
    	{
    		string xml = "<root><algo>aaa</algo><nome>Rodrigo</nome></root>";
    		string pattern = @"\<nome\>(.*)\<\/nome\>";
    		
    		Regex r = new Regex(pattern, RegexOptions.IgnoreCase);
    		
    		Match m = r.Match(xml);
    		if (m.Success)
    		{
    			Console.WriteLine(m.Groups[1].Captures[0]);
    		}
    	}
    }


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    • Marcado como Resposta rodrigo.apostolo segunda-feira, 5 de junho de 2017 13:27
    segunda-feira, 5 de junho de 2017 10:47
  • Olá rodrigo.apostolo

    Pelo que entendi você quer salvar todo o conteúdo no banco linha por linha!

    Faça um FOR ou FOREACH e pegue a linha completa!

    Sem complicação!


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    Site: www.danielarrais.com.br
    Linkedin: http://www.linkedin.com/in/danielarrais
    E-mail: arraishapkido@gmail.com
    Skype: dani.arrais

    • Marcado como Resposta rodrigo.apostolo segunda-feira, 5 de junho de 2017 13:27
    segunda-feira, 5 de junho de 2017 11:02

Todas as Respostas

  • Rodrigo, 

    Seu XML não possui a tag <nome></nome> exatamente, mas o código funciona mesmo se mudar o nome da tag. Basta você utilizar expressão regular:

    using System;
    using System.Text.RegularExpressions;
    					
    public class Program
    {
    	public static void Main()
    	{
    		string xml = "<root><algo>aaa</algo><nome>Rodrigo</nome></root>";
    		string pattern = @"\<nome\>(.*)\<\/nome\>";
    		
    		Regex r = new Regex(pattern, RegexOptions.IgnoreCase);
    		
    		Match m = r.Match(xml);
    		if (m.Success)
    		{
    			Console.WriteLine(m.Groups[1].Captures[0]);
    		}
    	}
    }


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    • Marcado como Resposta rodrigo.apostolo segunda-feira, 5 de junho de 2017 13:27
    segunda-feira, 5 de junho de 2017 10:47
  • Olá rodrigo.apostolo

    Pelo que entendi você quer salvar todo o conteúdo no banco linha por linha!

    Faça um FOR ou FOREACH e pegue a linha completa!

    Sem complicação!


    Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.


    Daniel Ribeiro Arrais
    Consultor Sênior
    Site: www.danielarrais.com.br
    Linkedin: http://www.linkedin.com/in/danielarrais
    E-mail: arraishapkido@gmail.com
    Skype: dani.arrais

    • Marcado como Resposta rodrigo.apostolo segunda-feira, 5 de junho de 2017 13:27
    segunda-feira, 5 de junho de 2017 11:02
  • Obrigado galera!

    Posso não concordar com o que vc disse, mas lutarei até a morte pelo seu direito de dizer...

    segunda-feira, 5 de junho de 2017 13:28