Condividi tramite


Operazioni di I/O di base

Oltre a fornire strumenti per leggere i file di dati spaziali, il modulo di I/O spaziale espone le librerie sottostanti di base per leggere e scrivere dati XML e delimitati in modo rapido ed efficiente.

Lo spazio dei nomi atlas.io.core contiene due classi di basso livello che possono leggere e scrivere rapidamente dati CSV e XML. Queste classi di base alimentano i lettori e i writer di dati spaziali nel modulo I/O spaziale. È possibile usarle per aggiungere altre informazioni di lettura e scrittura per i file CSV o XML.

Leggere i file delimitati

La classe atlas.io.core.CsvReader legge le stringhe che contengono set di dati delimitati. Questa classe fornisce due metodi per la lettura dei dati:

  • La funzione read legge il set di dati completo e restituisce una matrice bidimensionale di stringhe che rappresenta tutte le celle del set di dati delimitato.
  • La funzione getNextRow legge ogni riga di testo in un set di dati delimitato e restituisce una matrice di stringhe che rappresenta tutte le celle della riga del set di dati. L'utente può elaborare la riga ed eliminare qualsiasi memoria non richiesta da tale riga prima di elaborare la riga successiva. Quindi, la funzione è più efficiente per la memoria.

Per impostazione predefinita, il lettore usa il carattere virgola come delimitatore. Tuttavia, il delimitatore può essere modificato in qualsiasi carattere singolo o impostato su 'auto'. Se impostato su 'auto', il lettore analizza la prima riga di testo nella stringa. Selezionare quindi il carattere più comune dalla tabella seguente da usare come delimitatore.

Delimitatore Carattere
Virgola ,
Tab \t
Pipe |

Questo lettore supporta anche qualificatori di testo usati per gestire le celle che contengono il carattere delimitatore. Il carattere virgolette ('"') è il qualificatore di testo predefinito, ma può essere modificato in qualsiasi carattere singolo.

Scrivere file delimitati

atlas.io.core.CsvWriter scrive una matrice di oggetti come stringa delimitata. Qualsiasi carattere singolo può essere usato come delimitatore o qualificatore di testo. Il delimitatore predefinito è la virgola (',') e il qualificatore di testo predefinito è il carattere virgolette ('"').

Seguire la procedura per usare questa classe:

  • Creare un'istanza della classe e, facoltativamente, impostare un delimitatore personalizzato o un qualificatore di testo.
  • Scrivere dati nella classe usando la funzione write o la funzione writeRow. Per la funzione write, passare una matrice bidimensionale di oggetti che rappresentano più righe e celle. Per usare la funzione writeRow, passare una matrice di oggetti che rappresenta una riga di dati con più colonne.
  • Chiamare la funzione toString per recuperare la stringa delimitata.
  • Facoltativamente, chiamare il metodo clear per rendere riutilizzabile il writer e ridurne l'allocazione delle risorse oppure chiamare il metodo delete per eliminare l'istanza del writer.

Nota

Il numero di colonne scritte sarà vincolato al numero di celle nella prima riga dei dati passati al writer.

Leggere i file XML

La classe atlas.io.core.SimpleXmlReader è più veloce durante l'analisi dei file XML rispetto a DOMParser. Tuttavia, la classe atlas.io.core.SimpleXmlReader richiede che i file XML siano formattati correttamente. I file XML non formattati correttamente, ad esempio i tag di chiusura mancanti, possono generare un errore.

Il codice seguente illustra come usare la classe SimpleXmlReader per analizzare una stringa XML in un oggetto JSON e serializzarla in un formato desiderato.

//Create an instance of the SimpleXmlReader and parse an XML string into a JSON object.
var xmlDoc = new atlas.io.core.SimpleXmlReader().parse(xmlStringToParse);

//Verify that the root XML tag name of the document is the file type your code is designed to parse.
if (xmlDoc && xmlDoc.root && xmlDoc.root.tagName && xmlDoc.root.tagName === '<Your desired root XML tag name>') {

    var node = xmlDoc.root;

    //Loop through the child node tree to navigate through the parsed XML object.
    for (var i = 0, len = node.childNodes.length; i < len; i++) {
        childNode = node.childNodes[i];

        switch (childNode.tagName) {
            //Look for tag names, parse and serialized as desired.
        }
    }
}

Scrivere file XML

La classe atlas.io.core.SimpleXmlWriter scrive codice XML ben formattato in modo efficiente.

Il codice seguente illustra come utilizzare la classe SimpleXmlWriter per generare una stringa XML ben formattata.

//Create an instance of the SimpleXmlWriter class.
var writer = new atlas.io.core.SimpleXmlWriter();

//Start writing the document. All write functions return a reference to the writer, making it easy to chain the function calls to reduce the code size.
writer.writeStartDocument(true)
    //Specify the root XML tag name, in this case 'root'
    .writeStartElement('root', {
        //Attributes to add to the root XML tag.
        'version': '1.0',
        'xmlns': 'http://www.example.com',
         //Example of a namespace.
        'xmlns:abc': 'http://www.example.com/abc'
    });

//Start writing an element that has the namespace abc and add other XML elements as children.
writer.writeStartElement('abc:parent');

//Write a simple XML element like <title>Azure Maps is awesome!</title>
writer.writeElement('title', 'Azure Maps is awesome!');

//Close the element that we have been writing children to.
writer.writeEndElement();

//Finish writing the document by closing the root tag and the document.
writer.writeEndElement().writeEndDocument();

//Get the generated XML string from the writer.
var xmlString = writer.toString();

Il codice XML generato dal codice precedente sarà simile al seguente.

<?xml version="1.0" encoding="UTF-8"?>
<root version="1.0" xmlns="http://www.example.com" xmlns:abc="http://www.example.com/abc">
    <abc:parent>
        <title>Azure Maps is awesome!</title>
    </abc:parent>
</root>

Passaggi successivi

Per altre informazioni sulle classi e sui metodi usati in questo articolo, vedere:

CsvReader

CsvWriter

SimpleXmlReader

SimpleXmlWriter

Per altri esempi di codice da aggiungere alle mappe, vedere gli articoli seguenti:

Dettagli del formato dati supportati