Appearance
Таб 'безопасность' в драйверах
Суть импорта драйвера заключается в том, чтобы загрузить файл любого формата (в данный момент только .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);
};