Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
%>
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 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.
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...
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ã.
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
Gustavo ler e consegui o problema está sendo gravar na base de de dados :(
vai dar para ler fazer a condicional para saber se já foi gravado e se não tiver cria o registro... é rápido!!
só postar o xml ou pode me enviar por skype...
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. TranquiloPessoal, 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
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.
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.