eliminare un record XML con ASP

  • Creatore Discussione Creatore Discussione xarium
  • Data di inizio Data di inizio

xarium

Nuovo Utente
2 Nov 2004
19
1
0
Salve a tutti, spero questo sia il forum corretto in cui postare il mio problemma:
il mio scopo è quello di creare una funzione che passando 2 dati (indirizzo del file XML e il parametro "data" tramite "request.querystring("cancella") ") mi cancelli un preciso record dal file.
Al momento sono riuscito solo a cancellare tutti i campi del record, e a non farlo così visualizare nel file di LayOut, tuttavia temo che alla lunga il mio file XML si riempia di record vuoti.

Ho pensato anche di aprirlo come file di testo e di sostituire con la funzione Replace tutte le occorrenze di "<record><data></data><utente></utente><testo></testo></record>" con ""... ma mi sembra una soluzione davvero poco efficente ed elegante... qualcuno sa suggerirmi qualcosa?


File XML
Codice:
<?xml version="1.0"?>
<database>
	<record>
		<data>13/07/05 11.06.15</data>
		<utente>xarium</utente>
		<testo>primo messaggio</testo>
	</record>
	<record>
		<data>13/08/05 12.41.18</data>
		<utente>xarium</utente>
		<testo>bla bla bla...</testo>
	</record>
	<record>
		<data></data>
		<utente></utente>
		<testo></testo>
	</record>
</database>

Funzione ASP
Codice:
function cancella(dataBasePath)

   ' CARICO IL DOCUMENTO XML NEL DOM
   Dim objXmlDom
   Set objXmlDom = Server.CreateObject("Microsoft.XMLDOM")
      objXmlDom.async = False
      objXmlDom.load Server.MapPath(dataBasePath)

   Set record = objXmlDom.getElementsByTagName("database/record")
   for i=(record.length-1) to 0 step -1
      if record(i).childNodes(0).text=request.querystring("cancella") then
         record(i).childNodes(0).text = ""
         record(i).childNodes(1).text = ""
         record(i).childNodes(2).text = ""
         Exit for
      end if
   next

   ' SALVO L'AGGIORNAMENTO DEL NODO DEL FILE XML
   objXmlDom.Save Server.MapPath(dataBasePath)

   ' UN PO DI PULIZIA...
   Set record = Nothing
   Set objXmlDom = Nothing

end function

Ciao!
 
Ultima modifica:
Soluzione

Cercando per parecchie ore ne web sono giunto alla seguente versione che grazie al cielo funziona! :)

Codice:
function cancella(dataBasePath)

' CARICO IL DOCUMENTO XML NEL DOM
   Dim objXmlDom
   Set objXmlDom = Server.CreateObject("Microsoft.XMLDOM")
   objXmlDom.async = False
   objXmlDom.load Server.MapPath(dataBasePath)

   Set record = objXmlDom.SelectSingleNode("database/record[data='" & request.querystring("cancella") & "']")

   objXmlDom.documentElement.removeChild(record)

   ' SALVO L'AGGIORNAMENTO DEL NODO DEL FILE XML
   objXmlDom.Save Server.MapPath(dataBasePath)

   ' UN PO DI PULIZIA...
   Set record = Nothing
   Set objXmlDom = Nothing

end function

:byebye:
 
Ultima modifica:

Discussioni simili