Код: Выделить всё
Draw.io Editor Test
body {
margin: 0;
padding: 20px;
font-family: Arial, sans-serif;
}
#controls {
margin-bottom: 10px;
}
button {
padding: 10px 20px;
font-size: 16px;
cursor: pointer;
background-color: #4CAF50;
color: white;
border: none;
border-radius: 4px;
}
button:hover {
background-color: #45a049;
}
#editor {
width: 100%;
height: 600px;
border: 1px solid #ccc;
}
#output {
margin-top: 20px;
padding: 10px;
background-color: #f5f5f5;
border: 1px solid #ddd;
border-radius: 4px;
max-height: 300px;
overflow: auto;
}
pre {
margin: 0;
white-space: pre-wrap;
word-wrap: break-word;
}
Draw.io Editor Test
Extract XML
https://embed.diagrams.net/?embed=1&ui=simple&proto=json&modified=0&libraries=1&saveAndExit=0&noSaveBtn=1&noExitBtn=1
const iframe = document.getElementById('editor');
let receivedXML = null;
// Listen for messages from the iframe
window.addEventListener('message', function(evt) {
if (evt.data && typeof evt.data === 'string') {
try {
const msg = JSON.parse(evt.data);
console.log('Received message:', msg);
// Handle the export response
if (msg.event === 'export') {
receivedXML = msg.data;
displayXML(receivedXML);
}
// Handle init event - editor is ready, send load action to enable it
if (msg.event === 'init') {
console.log('Editor initialized, loading blank diagram');
iframe.contentWindow.postMessage(
JSON.stringify({
action: 'load',
autosave: 0,
xml: ''
}),
'*'
);
}
} catch (e) {
// Not a JSON message, ignore
console.debug('Non-JSON message:', e);
}
}
});
function extractXML() {
// Request XML export from the editor
iframe.contentWindow.postMessage(JSON.stringify({
action: 'export',
format: 'xml',
compressed: false
}), '*');
}
function displayXML(xml) {
const output = document.getElementById('output');
output.innerHTML = 'Extracted XML:' + escapeHtml(xml) + '';
}
function escapeHtml(text) {
const map = {
'&': '&',
'': '>',
'"': '"',
"'": '''
};
return text.replace(/[&"']/g, m => map[m]);
}
// Wait for iframe to load
iframe.onload = function() {
console.log('Iframe loaded');
};
Теперь мне нужно экспортировать диаграмму в несжатый XML.
Тест
Если вы используете Drawio на своем компьютере и просто поместили значок фигуры AWS EC2 из библиотеки AWS (AWS/Compute), а затем сохранили его, файл .xml.drawio будет иметь вид вот так:
Код: Выделить всё
Код: Выделить всё
"jZRfb6MwDMA/Da8Vf8rR14N1u0mbNGkP95yBgWgBo8Rd6X36c0ooUJi0lrbxz3bsuHa8KGv6Jy26+hULUF7oF70XPXhheNjv+duCywD2BwcqLYsBBRN4l//AQd/RkyzALAwJUZHsljDHtoWcFkxojeelWYlqGbUTlYvoT+A9FwpWZn9lQbU7Vjyz/gOyqsfIge80jRiNHTC1KPA8Q9HRizKNSMOq6TNQtnZjXQa/x2+0t8Q0tPQTh3Dt4PYwdBmPaz6Bcpu370Vph7Kla/3ilB/ePhs+MZtmluzCeANusWQNg7UZ/wRbEe7hFkvWMFibWWnMegm3WBKvM773Dja8gztvfqIUT6RkC9mtU22NS2wpQ4X6Wv+I34/270tLqdSMHx8S21lRakjjJ8w05fXFmkKYGgq37RdoktzFL+ID1BsaSRJb1n0gETYzg99KVlZB2DEVTsq5RYADpDU1iuXAZermMwhH2XWODSlMNxyrlL3NI+WG76yy6St7NezE2ex3GgyedA7Puc0nZXFYLa0gtxGG7vwS6uS60wFOHfpZB7t+fwJsgPSFTerZSCaHwe08je+Ixk1+uRG93MnCXR7VbedpvnjhRmwUp1G+6mb3YXT8Dw=="
Код: Выделить всё
Вопрос
Есть ли способ получить только несжатый XML с метаданными?
Подробнее здесь: https://stackoverflow.com/questions/798 ... n-metadata
Мобильная версия