Delen via


Kern-IO-bewerkingen

Naast hulpprogramma's voor het lezen van ruimtelijke gegevensbestanden, maakt de ruimtelijke IO-module onderliggende kernbibliotheken snel en efficiënt beschikbaar voor het lezen en schrijven van XML- en gescheiden gegevens.

De atlas.io.core naamruimte bevat twee klassen op laag niveau die snel CSV- en XML-gegevens kunnen lezen en schrijven. Deze basisklassen zijn van kracht voor de lezers en schrijvers van ruimtelijke gegevens in de module Spatial IO. U kunt deze gebruiken om meer lees- en schrijfondersteuning toe te voegen voor CSV- of XML-bestanden.

Bestanden met scheidingstekens lezen

De atlas.io.core.CsvReader klasse leest tekenreeksen die gegevenssets met scheidingstekens bevatten. Deze klasse biedt twee methoden voor het lezen van gegevens:

  • De read functie leest de volledige gegevensset en retourneert een tweedimensionale matrix van tekenreeksen die alle cellen van de gegevensset met scheidingstekens vertegenwoordigen.
  • De getNextRow functie leest elke regel tekst in een gegevensset met scheidingstekens en retourneert een matrix van tekenreeksen die alle cellen in die gegevensregel vertegenwoordigt. De gebruiker kan de rij verwerken en eventueel overbodig geheugen uit die rij verwijderen voordat de volgende rij wordt verwerkt. De functie is dus geheugenefficiënter.

Standaard gebruikt de lezer het kommateken als scheidingsteken. Het scheidingsteken kan echter worden gewijzigd in één teken of worden ingesteld op 'auto'. Als deze optie is ingesteld op 'auto', analyseert de lezer de eerste regel tekst in de tekenreeks. Vervolgens wordt het meest voorkomende teken uit de volgende tabel geselecteerd om als scheidingsteken te gebruiken.

Scheidingsteken Teken
Komma ,
Tabblad \t
Pipe |

Deze lezer ondersteunt ook tekstscheidingstekens die worden gebruikt voor het verwerken van cellen die het scheidingsteken bevatten. Het aanhalingsteken ('"') is de standaardtekstscheidingsteken, maar kan worden gewijzigd in één teken.

Bestanden met scheidingstekens schrijven

De atlas.io.core.CsvWriter schrijft een matrix met objecten als een tekenreeks met scheidingstekens. Elk teken kan worden gebruikt als scheidingsteken of tekstscheidingsteken. Het standaardscheidingsteken is komma (',') en de standaardtekstscheidingsteken is het aanhalingsteken ('"').

Volg de stappen om deze klasse te gebruiken:

  • Maak een exemplaar van de klasse en stel eventueel een aangepast scheidingsteken of tekstscheidingsteken in.
  • Schrijf gegevens naar de klasse met behulp van de write functie of de writeRow functie. Geef voor de write functie een tweedimensionale matrix met objecten door die meerdere rijen en cellen vertegenwoordigen. Als u de writeRow functie wilt gebruiken, geeft u een matrix met objecten door die een rij met gegevens met meerdere kolommen vertegenwoordigen.
  • Roep de toString functie aan om de tekenreeks met scheidingstekens op te halen.
  • U kunt desgewenst de clear methode aanroepen om de schrijver herbruikbaar te maken en de resourcetoewijzing te verminderen, of de delete methode aanroepen om het writer-exemplaar te verwijderen.

Notitie

Het aantal geschreven kolommen wordt beperkt tot het aantal cellen in de eerste rij van de gegevens die worden doorgegeven aan de schrijver.

XML-bestanden lezen

De atlas.io.core.SimpleXmlReader klasse is sneller bij het parseren van XML-bestanden dan DOMParser. atlas.io.core.SimpleXmlReader De klasse vereist echter dat XML-bestanden goed zijn opgemaakt. XML-bestanden die niet goed zijn opgemaakt, bijvoorbeeld ontbrekende afsluitende tags, kunnen leiden tot een fout.

De volgende code laat zien hoe u de SimpleXmlReader klasse gebruikt om een XML-tekenreeks te parseren in een JSON-object en deze te serialiseren in een gewenste indeling.

//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.
        }
    }
}

XML-bestanden schrijven

De atlas.io.core.SimpleXmlWriter klasse schrijft goed opgemaakte XML op een geheugenefficiënte manier.

De volgende code laat zien hoe u de SimpleXmlWriter klasse gebruikt om een goed opgemaakte XML-tekenreeks te genereren.

//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();

De gegenereerde XML van de bovenstaande code ziet er als volgt uit.

<?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>

Volgende stappen

Meer informatie over de klassen en methoden die worden gebruikt in dit artikel:

CsvReader

CsvWriter

SimpleXmlReader

SimpleXmlWriter

Zie de volgende artikelen voor meer codevoorbeelden die u aan uw kaarten kunt toevoegen:

Details van ondersteunde gegevensindeling