English
Instant Developer Foundation Documentazione
  • Reference Librerie
  • Librerie Componenti
  • XML Document
  • Gestione Nodi

Has Next Node

funzione copia link

Scopo

Ritorna True se il documento XML ha ancora nodi di primo livello non visitati, False altrimenti.

Sintassi

boolean HasAnother = False          // 
// 
HasAnother := XMLDocument.HasNextNode()

Argomenti

Questa funzione non ha argomenti.

Valore di ritorno

True se il documento XML ha ancora nodi di primo livello non visitati, False altrimenti.

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 XML padre... causa un loop
)
{
  // 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            // 
    string s = ""                  // 
    // 
    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()
    {
      this.ScriviDebugStruttura(Nodo)
      // 
      NuovoOggetto.Nome := Nodo.GetAttribute(Nome)
      NuovoOggetto.Descrizione := Nodo.GetAttribute(Descrizione)
      Padre.ItemsFigli.Add(NuovoOggetto)
    }
    // 
    // Se è un nodo di tipo commento lo scrivo nel debug

    if Nodo.Type() = XML Comment Type
    {
      EsempiGL.DTTLogMessage(Nodo.Value(), ??, ??)
    }
    // 
    // Se il sorgente è di tipo text scrivo nel debug il testo contenuto

    if Nodo.IsText()
    {
      EsempiGL.DTTLogMessage(Nodo.Value(), ??, ??)
    }
    // 
    if Nodo.HasNextNode()
    {
      this.Importa0(Nodo, NuovoOggetto, ??)
    }
    // 
    // Se devo causo volontariamente un loop

    if loop
    {
      Sorgente.Reset()
    }
  }
  Padre.Loaded := True
  Padre.ItemsFigli.Loaded := True
}
  • La funzione naviga i figli del documento XML solamente al primo livello, ignorando i livelli più profondi. Per navigare oltre il primo livello occorre realizzare una funzione ricorsiva ed utilizzare anche la corrispondente funzione dell'oggetto XMLNode.
  • Solitamente questa funzione viene usata come condizione di un ciclo While per scandire l'elenco dei nodi di primo livello.

Ultima modifica: 23/03/2021 / Validità: da 6.5.2680

Vedi Anche

  • Get Next Node (funzione)
  • Has Next Node (funzione)
  • XML Node

Hai trovato utile l'articolo?

Grazie per il feedback!

Ti serve altro aiuto?

Consulta il Forum