Ir para conteúdo

POWERED BY:

Arquivado

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

ponto&vetor

Problemas em deletar nó no XML

Recommended Posts

Olá pessoal do fórum, beleza?

 

Eu pesquisei bastante sobre xml e asp e tem bastante coisa aqui, mas ainda não consegui resolver meu problema. Tenho este arquivo em xml:

 

<?xml version="1.0" encoding="iso-8859-1"?>
<fotosConsultas>
	<paciente id="49">
		<consulta id="62">
			<foto url="foto_gota.jpg"/>
			<foto url="foto_gota_gde.jpg"/>
		</consulta>
	</paciente>
</fotosConsultas>

Estou usando FOR e IF para percorrer os nós até achar o que eu quero, é para remover se tiver o atributo url igual ao que foi passado pelo querystring

 

arquivo = server.mappath("dados/fotos.xml")
set xml=server.createobject("microsoft.xmldom")
xml.load(arquivo)
set raiz = xml.documentElement
iPac = request.querystring("pac")
iCons = request.querystring("con")
iUrl - request.querystring("url")
for i = 0 to raiz.childNodes.length - 1
	if(raiz.childNodes(i).getAttribute("id") = iPac) then
		for j = 0 to raiz.childNodes(i).childNodes.length - 1
			if(raiz.childNodes(i).childNodes(j).getAttribute("id") = iCons) then
				for k = 0 to raiz.childNodes(i).childNodes(j).childNodes.length - 1
					if(raiz.childNodes(i).childNodes(j).childNodes(k).getAttribute("url") = iUrl)then
						set tirarFoto = raiz.childNodes(i).childNodes(j).childNodes(k) 'o problema aparece aqui
						raiz.removeChild(tirarFoto)
					end if							
				next
			end if
		next
	end if
next

O Problema é que o programa retorna o erro "O nó de parâmetro não é filho deste nó."

 

Aí eu tentei mudar o tirarFoto para raiz.childNodes(i).childNodes(j).childNodes, mas o erro muda para "Tipos incompatíveis: 'raiz.removeChild'"

 

Como eu faço para remover o nó? Já tentei de várias formas... agradeço a atenção!

Compartilhar este post


Link para o post
Compartilhar em outros sites

E aí Ted'K, mudei conforme o seu exemplo, ficou assim:

 

Set AlterarReg = Raiz.selectSingleNode("foto[url='"&iUrl&"']")  
raiz.removeChild(AlterarReg)

mas ele deu o erro "Chamada de procedimento ou argumento inválido: 'raiz.removeChild'" na linha que eu chamo o removeChild.

 

Como é um nó filho de um nó filho, eu tentei ir usando o selectSingleNode:

Set pegaPac = Raiz.selectSingleNode("paciente[id="&iPac&&quot]")

set pegaCons = pegaPac.selectSingleNode("consulta[id="&iCons&&quot]")

set pegaFoto = pegaCons.selectSingleNode("foto")

 

Mas ele deu erro "Objeto necessário: 'pegaPac'"

 

Valeu por enquanto

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloque agora como seu código do XML está sendo gerado e como o seu código ASP está!!

Opa, demorei mas to aqui.

 

O xml já existe com as tags iniciais

 

<?xml version="1.0" encoding="iso-8859-1"?>
<todasFotos>

</todasFotos>

 

Quando se cadastra um novo paciente, os ids de consulta e paciente são gravados no xml

 

dim arquivo
arquivo = server.mappath("dados/fotos.xml")
set xml=server.createobject("microsoft.xmldom")
xml.load(arquivo)
set raiz=xml.documentElement
		
set paciente=xml.createelement("paciente")
set idPaciente = xml.createAttribute("id")
idPaciente.nodeValue=session("idCadastrando")
paciente.setAttributeNode(idPaciente)
raiz.appendchild(paciente)
		
set consulta=xml.createelement("consulta")
set idConsulta = xml.createAttribute("id")
idConsulta.nodeValue=session("idConsulta")
consulta.setAttributeNode(idConsulta)
paciente.appendchild(consulta)
		
xml.save(arquivo)

por fim, as fotos são enviadas por formulário e outro arquivo atualiza o xml com nós-filho do nó com id's correspondentes. agora preciso dar a opção de excluir uma tag <foto> específica, pelo atributo "thumb"

 

idPac = session("paciente")
idCons = session("consulta")

'exportando xml com o codigo da consulta e as fotos em nós-filho
dim arquivo
arquivo = server.mappath("dados/fotos.xml")
set xml=server.createobject("microsoft.xmldom")
xml.load(arquivo)
set raiz=xml.documentElement
	
function salvaFotos(tag,ft)
	if (ft) <> empty then
		set identif=xml.createelement("foto")
			set urlFoto = xml.createAttribute("url")
			urlFoto.nodeValue=ft
			identif.setAttributeNode(urlFoto)
			identif.Text = "[descricao]"				
		tag.appendchild(identif)
	end if
end function	

for i = 0 to raiz.childNodes.length - 1
	if(raiz.childNodes(i).getAttribute("id") = idPac) then
		for j = 0 to raiz.childNodes(i).childNodes.length - 1
			if(raiz.childNodes(i).childNodes(j).getAttribute("id") = idCons) then
				call salvaFotos(raiz.childNodes(i).childNodes(j),f1)
				call salvaFotos(raiz.childNodes(i).childNodes(j),f2)
				call salvaFotos(raiz.childNodes(i).childNodes(j),f3)
				call salvaFotos(raiz.childNodes(i).childNodes(j),f4)
				call salvaFotos(raiz.childNodes(i).childNodes(j),f5)
			end if
		next
	end if
next

xml.save(arquivo)

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.