Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

JullySL

Ler XML linha por linha em ASP e gravar no bd

Recommended Posts

Olá, pessoal!

Preciso ler um documento xml linha por linha
Verificar se Existe e atualizar ou se não existir incluir na base de dados MYSQL

Segue código, estou iniciando com xml, por favor ajudem rs

 

<%
Set objXMLDoc = Server.CreateObject("Microsoft.XMLDOM")
objXMLDoc.async = False
objXMLDoc.load("C:\inetpub\wwwroot\teste\06_Xml\teste.xml")
Set Root = objXMLDoc.documentElement
Set NodeList = Root.getElementsByTagName("imovel")
For i = 0 to NodeList.length -1
Set REFERENCIA = objXMLDoc.getElementsByTagName("REFERENCIA")(i)
Response.Write REFERENCIA.text & "<br>"
Set rsCadastro = Server.CreateObject("AdoDB.Recordset")
SelCadastro = "SELECT * FROM imoveis WHERE REFERENCIA = '631401' "
rsCadastro.Open SelCadastro,dB
'Cria Variável
vReferencia = rsCadastro("REFERENCIA")
response.Write(vReferencia) & "   REF BD <br>"
response.Write REFERENCIA.text & "   REF XML <br>"
While not rsCadastro.EOF
if vReferencia = REFERENCIA.text then
response.Write"Igual <br>"
elseif vReferencia <> REFERENCIA.text then
response.Write"Difente <br>"
End if
rsCadastro.MoveNext
Wend
Next
Set objXMLDoc = Nothing
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá uma olhada no fórum que postei alguns exemplos de como fazer, vai te ajudar. No seu code leia o XML grave dando um INSERT no bd, mas antes de inserir faça um SQL SELECT para ver se existe se existir execute um SQ UPDATE no recordset.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim eu tb já testei com a consulta através do nº da referencia porém ele retorna que são diferentes, infelizmente não identifiquei o pq.
como mostra na tela
631401 REF BD
631401 REF XML
Difente

código:
SelCadastro = "SELECT * FROM imoveis WHERE REFERENCIA = '"&vReferencia&"'"

Obrigada!

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá um response.write na sua SQL para ver o que esta sendo passado. Mas pela sua SQL SELECT, veja se a variável vReferencia e referente ao REF, pois dae ele vai satisfazer o critério.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente trabalhar com XML da um trabalho mesmo.... por isso fiz a roda só que menor rsrs... como assim... é uma função que tem 2 parâmetros um éo xml inteiro e o outro é o nome da tag que quer e a função de devolve o valor... posso te passar mas precisaria ver sua estrutura do XML cole um exemplo que terá esse problema resolvido em instantes... sem chi des ou getelement... rsrs coisas assim.. muito simples...

Fico no aguardo

 

 

Sim eu tb já testei com a consulta através do nº da referencia porém ele retorna que são diferentes, infelizmente não identifiquei o pq.
como mostra na tela
631401 REF BD
631401 REF XML
Difente

código:
SelCadastro = "SELECT * FROM imoveis WHERE REFERENCIA = '"&vReferencia&"'"

Obrigada!

 

 

Dê um trim quando for comparar pode um espaço na frente ou atrás da referência...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gustavo, muito agradecida pelo retorno, segue código:Olá, pessoal!Preciso ler um documento xml linha por linhaVerificar se Existe e atualizar ou se não existir incluir na base de dados MYSQLSegue código, estou iniciando com xml, por favor ajudem rs <%Set objXMLDoc = Server.CreateObject("Microsoft.XMLDOM") objXMLDoc.async = False objXMLDoc.load("C:\inetpub\wwwroot\teste\06_Xml\teste.xml") Set Root = objXMLDoc.documentElementSet NodeList = Root.getElementsByTagName("imovel") For i = 0 to NodeList.length -1 Set REFERENCIA = objXMLDoc.getElementsByTagName("REFERENCIA")(i) Response.Write REFERENCIA.text & "

" Set rsCadastro = Server.CreateObject("AdoDB.Recordset")SelCadastro = "SELECT * FROM imoveis WHERE REFERENCIA = '631401' "rsCadastro.Open SelCadastro,dB 'Cria VariávelvReferencia = rsCadastro("REFERENCIA")response.Write(vReferencia) & " REF BD

"response.Write REFERENCIA.text & " REF XML

" While not rsCadastro.EOF if vReferencia = REFERENCIA.text thenresponse.Write"Igual

" elseif vReferencia <> REFERENCIA.text thenresponse.Write"Difente

"End if rsCadastro.MoveNextWend Next Set objXMLDoc = Nothing %>0QuoteMultiQuote

 

Desculpa ficou bagunçado pq estou usando o site atrves do ipad :(Qlq coisa envio o codigo identado amanhã.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe me expressei mal cole pra mim o seu arquivo XML abre ele com bloco de notas copie e cole aqui... com essa minha função eu extraio dados do arquivo da nota fiscal eletrônica para dar entrada na nota pelo arquivo ... com certeza esse seu arquivo não será diferente funcionará tranquilo...

Fico no aguardo do xml

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, dá uma olhada no fórum que tem este código que eu postei serve certinho para o que vc quer. Dá uma procurada. Mas no seu código depois de ler, dê um insert normal no bd, apenas coloque nos values as variáveis lidas. Mas antes de inserir faça um select, se ele for nao fir final do arquivo.

If not rs.eof é pw já existe dae vc ysa o update senao dá um insert. Tranquilo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, consegui resolver!
Segue código para ajudar quem futuramente precisar

if rsCadastro.eof then
'
' Insere
'
sSQL = "INSERT INTO IMOVEIS (REFERENCIA) VALUES('"&REFERENCIA.text&"')"
else
'
' Atualiza
'
sSQL = "UPDATE IMOVEIS SET CADASTRO='"&CADASTRO.text&"' where REFERENCIA='"&REFERENCIA.text&"' "
end if
'
' Executa SQL
Bjos e até a próxima

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso, perfeito, sempre faça um select antes para ver se existe o registro. E se quiser postar o code completo, ajudará outros companheiros com a mesma dificuldade.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.