Основные операции ввода-вывода

Помимо предоставления средств для чтения файлов пространственных данных, модуль пространственных операций ввода-вывода предоставляет базовые библиотеки для чтения и записи XML и данных с разделителями быстро и эффективно.

atlas.io.coreПространство имен содержит два класса низкого уровня, которые могут быстро считывать и записывать данные в формате CSV и XML. Эти базовые классы являются мощными модулями чтения и записи пространственных данных в модуле пространственного ввода-вывода. Вы можете использовать их для добавления дополнительной поддержки чтения и записи для CSV- или XML-файлов.

Файлы с разделителями

atlas.io.core.CsvReaderКласс считывает строки, содержащие наборы данных с разделителями. Этот класс предоставляет два метода для чтения данных:

  • Функция read считывает полный набор данных и возвращает двумерный массив строк, представляющий все ячейки набора данных с разделителями.
  • getNextRowФункция считывает каждую строку текста в наборе данных с разделителями и возвращает массив строк, представляющий все ячейки в этой строке набора данных. Пользователь может обработать строку и освободить все ненужные памяти из этой строки перед обработкой следующей строки. Таким образом, функция является более эффективной в памяти.

По умолчанию средство чтения использует символ запятой в качестве разделителя. Однако разделитель можно изменить на любой отдельный символ или установить в значение 'auto'. Если задано значение 'auto', средство чтения анализирует первую строку текста в строке. Затем в следующей таблице выбирается наиболее распространенный символ, используемый в качестве разделителя.

Разделитель Знак
Запятая ,
Вкладка \t
канал |

Этот модуль чтения также поддерживает текстовые квалификаторы, используемые для обработки ячеек, содержащих символ разделителя. Символ quote ('"') является ограничителем текста по умолчанию, но его можно заменить на любой отдельный символ.

Файлы с разделителями

Объект atlas.io.core.CsvWriter записывает массив объектов в виде строки с разделителями. Любой отдельный символ может использоваться как разделитель или как ограничитель текста. По умолчанию разделителем является запятая ( ',' ), а в качестве ограничителя текста по умолчанию используется символ quote ( '"' ).

Выполните действия, чтобы использовать этот класс:

  • Создайте экземпляр класса и при необходимости задайте настраиваемый разделитель или ограничитель текста.
  • Запишите данные в класс с помощью write функции или writeRow функции. Для write функции передайте двумерный массив объектов, представляющий несколько строк и ячеек. Чтобы использовать writeRow функцию, передайте массив объектов, представляющий строку данных с несколькими столбцами.
  • Вызовите toString функцию, чтобы получить строку с разделителями.
  • При необходимости вызовите clear метод, чтобы модуль записи можно было повторно использовать и сократить его выделение ресурсов, или вызвать delete метод для удаления экземпляра модуля записи.

Примечание

Число записанных столбцов будет ограничено количеством ячеек в первой строке данных, передаваемых модулю записи.

Прочитать XML-файлы

atlas.io.core.SimpleXmlReaderКласс выполняется быстрее при анализе XML-файлов, чем DOMParser. Однако atlas.io.core.SimpleXmlReader класс требует, чтобы XML-файлы были правильно отформатированы. XML-файлы, которые не очень хорошо отформатированы, например отсутствие закрывающих тегов, могут привести к ошибке.

В следующем коде показано, как использовать SimpleXmlReader класс для синтаксического анализа XML-строки в объект JSON и сериализации его в нужный формат.

//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-файлов

atlas.io.core.SimpleXmlWriterКласс записывает хорошо отформатированный XML-код в память в удобном виде.

В следующем коде показано, как использовать SimpleXmlWriter класс для создания правильно отформатированной 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();

Созданный код XML из приведенного выше кода будет выглядеть следующим образом.

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

Дальнейшие действия

Дополнительные сведения о классах и методах, которые используются в этой статье:

CsvReader

CsvWriter

SimpleXmlReader

SimpleXmlWriter

Дополнительные примеры кода для добавления в карты см. в следующих статьях:

Сведения о поддерживаемых форматах данных