Podstawowe operacje we/wy
Oprócz udostępniania narzędzi do odczytywania plików danych przestrzennych moduł operacji we/wy przestrzennych uwidacznia podstawowe biblioteki umożliwiające szybkie i wydajne odczytywanie i zapisywanie danych XML oraz rozdzielane danymi.
atlas.io.core
Przestrzeń nazw zawiera dwie klasy niskiego poziomu, które mogą szybko odczytywać i zapisywać dane CSV i XML. Te klasy bazowe zasilają czytniki danych przestrzennych i zapisy w module Operacji we/wy przestrzenne. Możesz ich używać do dodawania obsługi odczytu i zapisu plików CSV lub XML.
Pliki rozdzielane do odczytu
Klasa atlas.io.core.CsvReader
odczytuje ciągi zawierające rozdzielane zestawy danych. Ta klasa udostępnia dwie metody odczytywania danych:
- Funkcja
read
odczytuje pełny zestaw danych i zwraca dwuwymiarową tablicę ciągów reprezentujących wszystkie komórki rozdzielanego zestawu danych. - Funkcja
getNextRow
odczytuje każdy wiersz tekstu w rozdzielonym zestawie danych i zwraca tablicę ciągu reprezentującą wszystkie komórki w tym wierszu zestawu danych. Użytkownik może przetworzyć wiersz i usunąć wszelkie niepotrzebne pamięci z tego wiersza przed przetworzeniem następnego wiersza. Dlatego funkcja jest wydajniejsza w pamięci.
Domyślnie czytelnik używa znaku przecinka jako ogranicznika. Ogranicznik można jednak zmienić na dowolny pojedynczy znak lub ustawić wartość 'auto'
. Po ustawieniu 'auto'
wartości czytelnik analizuje pierwszy wiersz tekstu w ciągu. Następnie wybiera najbardziej typowy znak z poniższej tabeli, który ma być używany jako ogranicznik.
Ogranicznik | Znak |
---|---|
Comma | , |
Tab | \t |
Fajka | | |
Ten czytnik obsługuje również kwalifikatory tekstowe używane do obsługi komórek zawierających znak ogranicznika. Znak cudzysłowu ('"'
) jest domyślnym kwalifikatorem tekstu, ale można go zmienić na dowolny pojedynczy znak.
Zapisywanie plików rozdzielonych
Obiekt atlas.io.core.CsvWriter
zapisuje tablicę obiektów jako rozdzielany ciąg. Dowolny pojedynczy znak może być używany jako ogranicznik lub kwalifikator tekstu. Domyślny ogranicznik to przecinek (','
), a domyślny kwalifikator tekstu to znak cudzysłowu ('"'
).
Wykonaj kroki, aby użyć tej klasy:
- Utwórz wystąpienie klasy i opcjonalnie ustaw niestandardowy ogranicznik lub kwalifikator tekstu.
- Zapisywanie danych w klasie przy użyciu
write
funkcji lubwriteRow
funkcji.write
W przypadku funkcji przekaż dwuwymiarową tablicę obiektów reprezentujących wiele wierszy i komórek. Aby użyćwriteRow
funkcji, przekaż tablicę obiektów reprezentujących wiersz danych z wieloma kolumnami. - Wywołaj funkcję ,
toString
aby pobrać rozdzielany ciąg. - Opcjonalnie wywołaj metodę
clear
, aby składnik zapisywania był wielokrotnego użytku i zmniejszył alokację zasobów, lub wywołajdelete
metodę w celu usunięcia wystąpienia składnika zapisywania.
Uwaga
Liczba zapisanych kolumn będzie ograniczona do liczby komórek w pierwszym wierszu danych przekazanych do modułu zapisywania.
Odczytywanie plików XML
Klasa jest szybsza atlas.io.core.SimpleXmlReader
w analizowaniu plików XML niż DOMParser
. atlas.io.core.SimpleXmlReader
Jednak klasa wymaga formatowania plików XML. Pliki XML, które nie są dobrze sformatowane, na przykład brakujące tagi zamykające, mogą powodować błąd.
Poniższy kod pokazuje, jak używać SimpleXmlReader
klasy do analizowania ciągu XML do obiektu JSON i serializowania go w żądanym formacie.
//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.
}
}
}
Zapisywanie plików XML
Klasa atlas.io.core.SimpleXmlWriter
zapisuje dobrze sformatowany kod XML w wydajny sposób pamięci.
Poniższy kod pokazuje, jak używać SimpleXmlWriter
klasy do generowania dobrze sformatowanego ciągu XML.
//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();
Wygenerowany kod XML z powyższego kodu wygląda następująco.
<?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>
Następne kroki
Dowiedz się więcej o klasach i metodach używanych w tym artykule:
Więcej przykładów kodu do dodania do map można znaleźć w następujących artykułach: