Scopo
Resetta gli indici dei nodi figli e degli attributi, impostando l'oggetto XMLNode come se nessuno dei suoi figli o dei suoi attributi sia mai stato visitato.
Sintassi
XMLNode.Reset()
Argomenti
Questa procedura non ha argomenti.Esempio di codice
// *********************************************************
// Explain which processing is carried out by this procedure
// *********************************************************
public void XMLDocument.Importa0(
XMLNode Sorgente // Nodo XML da cui leggere
MyXMLItem Padre // INDE Item in cui inserire i figli
optional boolean loop = 0 // Vero per resettare ad ogni ciclo il nodo XM...
)
{
// Se devo trovare un loop fermo il debug a 10 iterazioni
if loop
{
EsempiGL.DTTMaxLoopCycles := C10
}
//
// Finché trovo degli oggetti contenuti nella sorgente aggiungo figli
// all'oggetto padre
while Sorgente.HasNextNode()
{
MyXMLItem NuovoOggetto = new() //
XMLNode Nodo = null //
//
Nodo := Sorgente.GetNextNode()
//
// Scrivo nel debug il codice XML che sto leggendo
EsempiGL.DTTLogMessage(Nodo.ToString(), ??, ??)
//
// Se sto leggendo un oggetto di tipo item
if Nodo.Name() = item AND Nodo.IsElement()
...
//
// Se è un nodo di tipo commento lo scrivo nel debug
if Nodo.Type() = XML Comment Type
...
//
// Se il sorgente è di tipo text scrivo nel debug il testo contenuto
if Nodo.IsText()
...
//
if Nodo.HasNextNode()
...
//
// Se devo causo volontariamente un loop
if loop
{
Sorgente.Reset()
}
}
Padre.Loaded := True
Padre.ItemsFigli.Loaded := True
}
// Explain which processing is carried out by this procedure
// *********************************************************
public void XMLDocument.Importa0(
XMLNode Sorgente // Nodo XML da cui leggere
MyXMLItem Padre // INDE Item in cui inserire i figli
optional boolean loop = 0 // Vero per resettare ad ogni ciclo il nodo XM...
)
{
// Se devo trovare un loop fermo il debug a 10 iterazioni
if loop
{
EsempiGL.DTTMaxLoopCycles := C10
}
//
// Finché trovo degli oggetti contenuti nella sorgente aggiungo figli
// all'oggetto padre
while Sorgente.HasNextNode()
{
MyXMLItem NuovoOggetto = new() //
XMLNode Nodo = null //
//
Nodo := Sorgente.GetNextNode()
//
// Scrivo nel debug il codice XML che sto leggendo
EsempiGL.DTTLogMessage(Nodo.ToString(), ??, ??)
//
// Se sto leggendo un oggetto di tipo item
if Nodo.Name() = item AND Nodo.IsElement()
...
//
// Se è un nodo di tipo commento lo scrivo nel debug
if Nodo.Type() = XML Comment Type
...
//
// Se il sorgente è di tipo text scrivo nel debug il testo contenuto
if Nodo.IsText()
...
//
if Nodo.HasNextNode()
...
//
// Se devo causo volontariamente un loop
if loop
{
Sorgente.Reset()
}
}
Padre.Loaded := True
Padre.ItemsFigli.Loaded := True
}
- L'utilizzo della procedura Reset può causare loop nell'esecuzione del codice. Se ad esempio si utilizza erroneamente all'interno del ciclo di lettura di un documento XML si può innescare un ciclo infinito.
Ultima modifica: 23/03/2021 / Validità: da 6.5.2680