Trabajar con archivos .archimate
Archi puede guardar un modelo de dos formas, ambas con la extensión
.archimate:
- XML plano — el modelo como un único archivo de texto XML;
- archivo zip — un
model.xmlmás una entradaimages/por cada icono personalizado incrustado, comprimidos juntos bajo la misma extensión. Archi usa esta forma automáticamente siempre que el modelo tiene imágenes incrustadas y no se almacena en una carpeta bajo control de git (dentro de carpetas git, elArchiveManagerde Archi prefiere una estructura de XML plano + carpetaimages/hermana para que los binarios de las imágenes sigan siendo compatibles con los diffs).
Un archivo .archimate en formato zip es binario — leerlo con un
decodificador de texto antes de detectar el formato lo corrompería
irremediablemente.
extractArchiModelXml
Sección titulada «extractArchiModelXml»La función solo para Node
extractArchiModelXml
acepta bytes de archivo crudos y devuelve el texto XML del modelo tanto si la
entrada es XML plano como un archivo zip:
import { readFileSync } from 'node:fs';import { extractArchiModelXml } from '@cda/archi-semantic-core/archive';import { parseArchiModel } from '@cda/archi-semantic-core';
const bytes = readFileSync('MyModel.archimate'); // read as bytes, not textconst xml = extractArchiModelXml(bytes); // plain XML or zip, both workconst model = parseArchiModel(xml);Detecta la firma del zip y decodifica la entrada directamente como texto
UTF-8 (XML plano) o la descomprime y decodifica la entrada model.xml
(archivo zip) — usando el zlib integrado de Node, sin dependencias
adicionales.
Por qué /archive es un subpath separado
Sección titulada «Por qué /archive es un subpath separado»extractArchiModelXml depende del node:zlib de Node. La raíz del paquete
sigue siendo compatible con navegadores/bundlers al no importarlo, de
modo que la función de manejo de zips vive en un subpath dedicado:
// Browser-safe coreimport { parseArchiModel, validateArchiModel } from '@cda/archi-semantic-core';
// Node-only archive handlingimport { extractArchiModelXml } from '@cda/archi-semantic-core/archive';Esta es una frontera de API pública intencional, no una ocurrencia tardía: los bundlers que consumen el punto de entrada raíz nunca ven un módulo integrado de Node.
Imágenes incrustadas
Sección titulada «Imágenes incrustadas»extractArchiModelXml no extrae los bytes de las imágenes. Si necesita
localizar las imágenes por su cuenta, trate las referencias que Archi expone
— como ArchiProfile.imagePath ("images/abc123.png") o la ruta de imagen de
un DiagramModelImageProvider — como punteros a las entradas images/ del
archivo.
Comportamiento ante errores
Sección titulada «Comportamiento ante errores»extractArchiModelXml lanza una excepción cuando la entrada:
- parece un zip pero no tiene una entrada
model.xml; - usa un método de compresión distinto de Stored/Deflate (Archi nunca escribe otra cosa);
- falla su comprobación de integridad CRC-32;
- es un zip truncado o corrupto.
Véase también
Sección titulada «Véase también»- Manejo de archivos en Node — guía más profunda sobre el pipeline de archivos y la taxonomía de errores.