Usuário com melhor resposta
Ler XML e Salvar Nó e valor no BD

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...
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
-
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
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
-
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
-