From the documentation of RAVAL, the MIT library of the books: the same as in its repository.
This page is available in Italian only for now.
Dati da JSON e XML — RAVAL 2.4
RNode è l'albero dei dati di un file JSON o XML: si legge, si interroga con un percorso, si cambia e si riscrive. Non usa nessun tipo di Avalonia: va bene in un servizio, in un programma a riga di comando, in una prova. Per vederlo in una finestra c'è RTree (scheda RGrafica.md).
Spiegazione con gli esempi: TUTORIAL.md, capitolo 17. Ogni membro, con la sua firma, è nel riferimento API.md. Le prove sono in TEST_RAVAL\ProveAlbero.cs (Dati).
Data\RNode.cs
RNode p = RNode.Load("progetto.json"); // «.xml»: XML; il resto: JSON
int porta = p.GetInt("server.port", 5080);
string v = p.GetString("componenti[1].valore", "");
int x = RNode.FromXml(testo).GetInt("server/@port", 80, "/");
p.Find("server.port")!.Set(5081);
p["componenti"]!.Add(RNode.Object().Add(RNode.Text("nome", "C4")));
p.Save("progetto.json");
| Membro | Fa |
|---|---|
RNode.Load(file) · FromJson(testo) · FromXml(testo) | il file letto tutto; JSON con commenti e virgole finali accettati; XML con gli attributi «@nome» come primi figli e il testo come valore |
Kind (RNodeKind) · Name · Value · IsText | oggetto, lista, valore, elemento o attributo; il nome («[i]» in una lista, «@nome» per un attributo); il valore come testo; se nel JSON va fra virgolette |
Children · Count · this[nome] · Child · At(i) · Parent | i figli in ordine di file |
Find(percorso, sep) · Path(sep) · Descendants() | «server.port», «items[2].name», «server/@port» con «/»; la radice senza nome (JSON) non compare nel percorso |
GetString · GetInt · GetDouble · GetBool · GetList | le letture con il predefinito, i numeri con il punto, sì/no come in RSettings |
RNode.Object · Array · Text · Number · Bool · Element · Attribute | nodi nuovi; Add e Remove (in una lista i figli si rinumerano) |
Set(testo) · Set(numero) · Set(sì/no) | cambiano un valore; il testo si riscrive fra virgolette, il resto no |
ToJson() · ToJsonNode() · ToXml() · Save(file) | la scrittura: JSON rientrato con gli accenti come sono; un XML in JSON (attributi «@nome», testo «#text», nomi ripetuti in una lista); un JSON in XML («root», elementi «item»); il file via un temporaneo rinominato |
Source · Tag | il JsonNode, l'XElement o l'XAttribute letto; quello che serve al programma |
Perché è fatta così
- Una classe sola per JSON e XML. Chi legge un file vuole un valore a un percorso, non la differenza fra
JsonObjecteXElement; il tipo resta inKindper chi ne ha bisogno. - Lo stesso percorso di
RSettingse diRTreeNode: il nodo scelto in un albero dice la chiave da leggere nel file. - Separata da Avalonia.
RTreeNode, il nodo dell'albero visuale, ha colori e voci sullo schermo;RNodeno. La prova controlla che nessuna firma diRNodenomini un tipo di Avalonia.