Belangrijkste IO-bewerkingen
Naast het bieden van hulpprogramma's voor het lezen van ruimtelijke gegevensbestanden, maakt de ruimtelijke IO-module kernbibliotheken beschikbaar voor het snel en efficiënt lezen en schrijven van XML en gescheiden gegevens.
De atlas.io.core
naamruimte bevat twee klassen op laag niveau waarmee csv- en XML-gegevens snel kunnen worden gelezen en geschreven. Deze basisklassen maken gebruik van de lezers en schrijvers van ruimtelijke gegevens in de module Spatial IO. U kunt ze gerust 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 gescheiden gegevenssets bevatten. Deze klasse biedt twee methoden voor het lezen van gegevens:
- De
read
functie leest de volledige gegevensset en retourneert een tweedimensionale matrix met tekenreeksen die alle cellen van de gescheiden gegevensset vertegenwoordigen. - De
getNextRow
functie leest elke tekstregel in een gegevensset met scheidingstekens en retourneert een matrix met tekenreeksen die alle cellen in die gegevensset vertegenwoordigen. De gebruiker kan de rij verwerken en overbodig geheugen uit die rij verwijderen voordat de volgende rij wordt verwerkt. De functie is dus efficiënter geheugen.
Standaard gebruikt de lezer het kommateken als scheidingsteken. Het scheidingsteken kan echter worden gewijzigd in één teken of set in 'auto'
. Als dit is ingesteld 'auto'
, analyseert de lezer de eerste regel tekst in de tekenreeks. Vervolgens wordt het meest voorkomende teken uit de volgende tabel geselecteerd om te gebruiken als scheidingsteken.
Scheidingsteken | Teken |
---|---|
Door komma's gescheiden | , |
Tab | \t |
Pijp | | |
Deze lezer ondersteunt ook tekstscheidingstekens die worden gebruikt voor het verwerken van cellen die het scheidingsteken bevatten. Het aanhalingsteken ('"'
) is de standaardscheidingsteken voor tekst, maar kan worden gewijzigd in een willekeurig teken.
Bestanden met scheidingstekens schrijven
Hiermee atlas.io.core.CsvWriter
schrijft u een matrix met objecten als een tekenreeks met scheidingstekens. Elk willekeurig 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 desgewenst een aangepast scheidingsteken of tekstscheidingsteken in.
- Schrijf gegevens naar de klasse met behulp van de
write
functie of dewriteRow
functie. Geef voor dewrite
functie een tweedimensionale matrix met objecten door die meerdere rijen en cellen vertegenwoordigen. Als u dewriteRow
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. - Roep desgewenst de
clear
methode aan om de schrijver herbruikbaar te maken en de resourcetoewijzing te verminderen, of roep dedelete
methode aan om het schrijverexemplaren te verwijderen.
Notitie
Het aantal geschreven kolommen wordt beperkt tot het aantal cellen in de eerste rij van de gegevens dat aan de schrijver is doorgegeven.
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 slottags, 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 efficië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 in dit artikel worden gebruikt:
Zie de volgende artikelen voor meer codevoorbeelden die u aan uw kaarten kunt toevoegen: