Skip to content

Таб 'безопасность' в драйверах

Суть импорта драйвера заключается в том, чтобы загрузить файл любого формата (в данный момент только .knxproj), распарсить информацию, заключенную в нем по определенному алгоритму, и, на основе этой информации создать редактируемые сущности и последущим парсом для отправки на runtime.

Парс соответсвующих файлов

vue
const parseKNXProjFile = async (file: File): Promise<void> => {
  const arrayBuffer = await file.arrayBuffer();
  const zip = new JSZip();
  const zipContent = await zip.loadAsync(arrayBuffer);
  const zeroXmlFile = Object.keys(zipContent.files).find((key) =>
    // Берем конкретный xml файл из .knxproj
    key.match(/P-.*\/0\.xml$/),
  );

  if (!zeroXmlFile) {
    throw new Error("No 0.xml file found in the project folder");
  }

  const xmlFile = zipContent.files[zeroXmlFile];
  const xmlContent = await xmlFile.async("string");

  // Парсим этот файл для полседкющего вытягивания необходимой информации
  const parsedXml = await new Promise((resolve, reject) => {
    parseString(xmlContent, { explicitArray: false }, (err, result) => {
      if (err) reject(err);
      else resolve(result);
    });
  });

  // Передаем в функцию для изъятия данных из файла. Данная функция подходит только для KNX
  await extractDataFromXML(parsedXml);
};

Mentioned In