English
Instant Developer Foundation Documentazione
  • Reference Librerie
  • Document Orientation
  • ID Document
  • XML JSON

On Save XML Prop

evento copia link

Condizioni di notifica

Questo evento viene notificato al documento durante il salvataggio in XML.

Utilizzo consigliato

Normalmente questo evento viene gestito quando occorre personalizzare il salvataggio del documento in XML. Può essere utile farlo, per esempio, se è richiesto un formato particolare dell'XML, diverso da quello che avrebbe l'XML se fosse generato dal sistema. L'evento permette infatti, di indicare quale dei due formati è possibile utilizzare per mezzo del parametro UsaElemento (per i formati XML forniti dal sistema si veda il paragrafo Note nell'articolo LoadFromXML). Inoltre è possibile specificare quale nome deve avere il nodo XML per ognuna delle proprietà del documento. E' anche possibile, utilizzando questo evento, aggiungere nodi in più nel documento.

Argomenti

Nome Interno Parametro stringa. Rappresenta il nome della proprietà del documento che sta per essere salvata.
Tag Esterno Parametro di output stringa. Rappresenta il nome che il sistema deve utilizzare per l'attributo (o il nodo XML) che contiene il valore della proprietà.
Valore E' il valore della proprietà che verrà salvata. E' possibile cambiarlo per salvare, nel documento XML, un valore diverso da quello della proprietà.
Usa Elemento Parametro di output booleano. Indica al sistema quale formato occorre utilizzare per scrivere le proprietà nel documento XML. Se vale True viene usato un nodo di tipo ELEMENT, se vale False viene utilizzato un attributo del nodo che identifica la classe.

Esempio di codice

// *******************************************
// Fired when a property is being saved to XML
// *******************************************

event Categorie.OnSaveXMLProp(
  string InternalName      // Internal property name or empty to store additional attributes
  inout string ExternalTag // External XML attribute name
  inout string Value       // Value to store
  inout boolean UseElement // Set to TRUE to use an element
)
{
  // Indico al sistema quale formato desidero per l'XML
  UseElement := CategorieDO.XML.UsaElement
  // 
  // Se devo traduco

  if CategorieDO.XML.Traduci = True
  {
    // Traduco l'XML in inglese
    if InternalName = IDCategoria
    {
      ExternalTag := CategoryID
    }
    if InternalName = IDCategoria +c C_O
    {
      ExternalTag := CategoryID +c C_O
    }
    // 
    if InternalName = NomeCategoria
    {
      ExternalTag := CategoryName
    }
    if InternalName = NomeCategoria +c C_O
    {
      ExternalTag := CategoryName +c C_O
    }
    // 
    if InternalName = Descrizione
    {
      ExternalTag := Description
    }
    if InternalName = Descrizione +c C_O
    {
      ExternalTag := Description +c C_O
    }
  }
  // 
  // Aggiungo una mia proprietà: DataOra di salvataggio

  if IsNull(InternalName)
  {
    ExternalTag := SaveTime
    Value := ToString(Now())
  }
}
  • L'evento viene notificato due volte per ogni proprietà del documento: la prima per comunicare al sistema il valore corrente di ogni proprietà e la seconda per comunicare al sistema il valore originale di ogni proprietà. Ad ogni notifica il parametro TagEsterno contiene già il nome proposto dal sistema che, nel caso dei valori originali delle proprietà, termina con la stringa "_O".
  • Dopo aver effettuato il salvataggio di tutte le proprietà, il sistema notifica l'evento al documento passando Null come valore di tutti i parametri. Se, dopo aver notificato l'evento, il sistema trova il valore della proprietà TagEsterno diversa da Null allora aggiunge un ulteriore nodo XML (o attributo a seconda del valore del parametro UsaElemento) memorizzando il valore identificato dal parametro Valore. Tale notifica speciale termina solo se il valore del parametro TagEsterno viene lasciato Null o il valore fornito al parametro TagEsterno è già stato utilizzato in precedenza.
  • Impostando il parametro TagEsterno a stringa vuota la proprietà non verrà inserita nel file XML.

Ultima modifica: 01/04/2020 / Validità: da 6.5.2680

Vedi Anche

  • Save To XML (funzione)
  • Load From XML (funzione)

Hai trovato utile l'articolo?

Grazie per il feedback!

Ti serve altro aiuto?

Consulta il Forum