Ir para conteúdo

POWERED BY:

Arquivado

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

rtava

ADO acessando XML

Recommended Posts

Pessoal,

Sei que é possível acessar um arquivo XML usando ADO. já consegui fazer a conexão com o arquivo. Porém, queria saber se é possível fazer um filtro de registros acessando XML, tal como é possível fazer acessando um BD com ADO.

Exemplo: Meu arquivo XML é como indicado abaixo (só que bem maior). Gostaria de criar um filtro para que o Recordset do ADO retornasse apenas os registros cujo campo "editoria desc" fosse igual a "Gastronomia".

 

É possível?

 

 

  <?xml v   ersion="1.0" encoding="ISO-8859-1" ?> 
  <rss version="0.91">
      <mobile-set>
         <mobile tipo="Outernet">
            <Paragrafo>O Tatuapé foi escolhido pelo Big X Picanha para ser o bairro da nova unidade da rede. A casa é inaugurada nesta quarta-feira (05).</Paragrafo> 
            <editoria desc="Gastronomia" path="/mobile/paineis/mundo" /> 
            <datas>
               <criacao local="2009-08-05 1:6:19" GMT="2009-08-05 1:6:19" /> 
            </datas>
            <elemrelacionados>
               <imagem id="MSN_r-sp-picanha_c" url="http://www.guiadasemana.com.br/photos/main/MSN_r-sp-picanha_c.jpg" /> 
            </elemrelacionados>
            <Rodape>Rua Serra do Japi, 758 Tatuapé</Rodape> 
         </mobile>
         <mobile tipo="Outernet">
            <Paragrafo>Até 12 de agosto, o La Casserole tem pratos servidos em comunhão com o seu próprio rótulo de vinho: o tinto Château La Grave 2005.</Paragrafo> 
            <editoria desc="Gastronomia" path="/mobile/paineis/mundo" /> 
            <datas>
               <criacao local="2009-08-05 1:6:19" GMT="2009-08-05 1:6:19" /> 
            </datas>
            <elemrelacionados>
               <imagem id="MSN_r-sp-grave_c" url="http://www.guiadasemana.com.br/photos/main/MSN_r-sp-grave_c.jpg" /> 
            </elemrelacionados>
            <Rodape>Largo do Arouche, 346 Centro</Rodape> 
         </mobile>
      </mobile-set>
  </rss>

Compartilhar este post


Link para o post
Compartilhar em outros sites

você vai ter que ler nó por nó e ai caso ache apresente só ele!

 

exemplo:

http://imasters.com.br/artigo/11026/asp/cadastrar_listar_editar_e_excluir_dados_de_um_xml_com_asp_-_parte_03/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ted, obrigado pela dica, mas não foi isso que quis dizer. Listar nó-po-nó tem um custo de processamento muito alto para arquivos XML grandes. Por essa razão perguntei se é possível, via ADO ou qualquer outro mecanismo, ler um arquivo XML fazendo com que esse "mecanismo" retorne apenas os registros que interessam (filtrando os registros que interessam). Dessa forma não é necessário passar um po um dos registros.

É possível isso que estou querendo? Seja com ADO ou qualquer outra maneira...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim Ted... Eu entendi que foi essa a sugestão, mas é isso mesmo que eu comentei que fica lento e por essa razão queria uma alternativa.

obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o seu XML esta muito grande, nem uma simples consulta assim:

 

<%
'xmlDom object
Set objXML = Server.CreateObject("Microsoft.XMLDOM")
objXML.async = False
'load the xml menu file
objXML.Load(Server.MapPath("parentes.xml"))
Dim strSearch, objXML, rootNode, childNode, match
strSearch = Request.form("fone") 'palavra chave
Set objLst = objXML.getElementsByTagName("parentes")
 'how many items
 intNoOfHeadlines = objLst.length
 'looping over the items -1 because it's starts from 0
 Response.Write "<font face=arial><table  border=0 >"
	response.write "<tr align=center bgcolor=Aqua><td><B>Fone</B></td><td><B>Nome</b></td><td><B>Atualizado ?</B></td></tr>"
 for i = 0 to intNoOfHeadlines-1
 	Set objHdl = objLst.item(i)
	'se a matricula childnode é = to the search criteria then print it
	if objHdl.childNodes(0).text = strSearch then
	response.write "<tr bgcolor=silver><td>" & objHdl.childNodes(0).text & "</td>"
	response.write "<td>" & "<a target=new href='"& objHdl.childNodes(3).text &"'>" & objHdl.childNodes(1).text & "</a></td>"
	response.write "<td>" & objHdl.childNodes(2).text & "</td></tr>"
	end if
 Next
 response.write "</table>"
 	response.write "<br><a href='busca.html'>Voltar</font></a>"

%>

demanda muito tempo ???

Compartilhar este post


Link para o post
Compartilhar em outros sites

O XML tem aproximadamente 50.000 registros (ou nós, como preferir). Cada registro tem outros 25 sub-nós. Preciso executar o mesmo script e carregar o mesmo XML 10 vezes de uma vez só (minha aplicação exige isso), e ao mesmo tempo processar outras informações de outros XML menores.

 

Portanto, sim, demandaria muito tempo de processamento com o uso desse formato de pesquisa neste caso.

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.