Scopo
Ritorna il primo nodo di primo livello non ancora visitato del documento. Se non ci sono nodi di primo livello, oppure se sono già stati visitati tutti, questa funzione ritorna Null Object. Normalmente questa funzione viene utilizzata all'interno di un ciclo While per scandire l'elenco dei nodi di primo livello dell'albero.
Sintassi
XMLNode XMLNode = null // Leggo il prossimo figlio del documento
//
XMLNode := XMLDocument.GetNextNode()
//
XMLNode := XMLDocument.GetNextNode()
Argomenti
Questa funzione non ha argomenti.Valore di ritorno
Ritorna il primo nodo di primo livello non ancora visitato del documento. Se non ci sono nodi di primo livello, oppure se sono già stati visitati tutti, questa funzione ritorna Null Object.
Esempio di codice
// ***********************************************
// Importa un documento XML dal file "filexml.xml"
// ***********************************************
public void XMLDocument.ImportaFile()
{
string filename = "" //
//
XMLString.Log := Empty String
//
filename := Path() +c C\ +c filexml.xml
if NullValue(filename, Empty String) <> Empty String
{
XMLDocument XMLDoc = new() //
XMLNode XMLNodo = null //
MyXMLItem MyOggetto = new() //
//
// Leggo il documento XML
XMLDoc.Load(filename)
if XMLDoc.HasNextNode()
{
// Recupero il nodo radice del documento XML
XMLNodo := XMLDoc.GetNextNode()
//
this.ScriviDebugStruttura(XMLNodo)
//
MyOggetto.Nome := XMLNodo.GetAttribute(Nome)
MyOggetto.Descrizione := XMLNodo.GetAttribute(Descrizione)
//
// Prendo gli eventuali oggetti figli
if XMLNodo.HasNextNode()
{
this.Importa0(XMLNodo, MyOggetto, ShiftKey)
}
MyOggetto.SetOriginal()
}
//
// Imposto Activate On Expand
AlberoOggetti.ActivateOnExpand := True
//
// Metto l'oggetto nell'albero
AlberoOggetti.SetDocument(MyOggetto)
//
// Eseguo Update Controls per poter attivare l'oggetto già in questa procedura, poi lo espando
this.UpdateControls()
AlberoOggetti.ActiveDocument := MyOggetto
this.Root := MyOggetto
AlberoOggetti.ExpandDoc(this.Root, True)
}
}
// Importa un documento XML dal file "filexml.xml"
// ***********************************************
public void XMLDocument.ImportaFile()
{
string filename = "" //
//
XMLString.Log := Empty String
//
filename := Path() +c C\ +c filexml.xml
if NullValue(filename, Empty String) <> Empty String
{
XMLDocument XMLDoc = new() //
XMLNode XMLNodo = null //
MyXMLItem MyOggetto = new() //
//
// Leggo il documento XML
XMLDoc.Load(filename)
if XMLDoc.HasNextNode()
{
// Recupero il nodo radice del documento XML
XMLNodo := XMLDoc.GetNextNode()
//
this.ScriviDebugStruttura(XMLNodo)
//
MyOggetto.Nome := XMLNodo.GetAttribute(Nome)
MyOggetto.Descrizione := XMLNodo.GetAttribute(Descrizione)
//
// Prendo gli eventuali oggetti figli
if XMLNodo.HasNextNode()
{
this.Importa0(XMLNodo, MyOggetto, ShiftKey)
}
MyOggetto.SetOriginal()
}
//
// Imposto Activate On Expand
AlberoOggetti.ActivateOnExpand := True
//
// Metto l'oggetto nell'albero
AlberoOggetti.SetDocument(MyOggetto)
//
// Eseguo Update Controls per poter attivare l'oggetto già in questa procedura, poi lo espando
this.UpdateControls()
AlberoOggetti.ActiveDocument := MyOggetto
this.Root := MyOggetto
AlberoOggetti.ExpandDoc(this.Root, True)
}
}
- La funzione ritorna il prossimo nodo navigando solamente tra i nodi di primo livello del documento.
- Un documento XML dovrebbe avere solamente un figlio di primo livello (root object) per essere "well formed".
Ultima modifica: 23/03/2021 / Validità: da 6.5.2680