Встроенный drawio не экспортирует XML с метаданными значков.Javascript

Форум по Javascript
Ответить
Anonymous
 Встроенный drawio не экспортирует XML с метаданными значков.

Сообщение Anonymous »

Я встроил редактор Drawio на свою веб-страницу.

Код: Выделить всё





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 будет таким: Как видите, XML содержит множество метаданных о фигурах и значках. Но если экспортировать с помощью написанного мной кода, событие будет содержать два свойства: xml и data (посмотрите в консоли свойства события экспорта). У последнего есть SVG, интерес представляет первый:

Код: Выделить всё

"jZRfb6MwDMA/Da8Vf8rR14N1u0mbNGkP95yBgWgBo8Rd6X36c0ooUJi0lrbxz3bsuHa8KGv6Jy26+hULUF7oF70XPXhheNjv+duCywD2BwcqLYsBBRN4l//AQd/RkyzALAwJUZHsljDHtoWcFkxojeelWYlqGbUTlYvoT+A9FwpWZn9lQbU7Vjyz/gOyqsfIge80jRiNHTC1KPA8Q9HRizKNSMOq6TNQtnZjXQa/x2+0t8Q0tPQTh3Dt4PYwdBmPaz6Bcpu370Vph7Kla/3ilB/ePhs+MZtmluzCeANusWQNg7UZ/wRbEe7hFkvWMFibWWnMegm3WBKvM773Dja8gztvfqIUT6RkC9mtU22NS2wpQ4X6Wv+I34/270tLqdSMHx8S21lRakjjJ8w05fXFmkKYGgq37RdoktzFL+ID1BsaSRJb1n0gETYzg99KVlZB2DEVTsq5RYADpDU1iuXAZermMwhH2XWODSlMNxyrlL3NI+WG76yy6St7NezE2ex3GgyedA7Puc0nZXFYLa0gtxGG7vwS6uS60wFOHfpZB7t+fwJsgPSFTerZSCaHwe08je+Ixk1+uRG93MnCXR7VbedpvnjhRmwUp1G+6mb3YXT8Dw=="
Содержимое сжато. Когда я прошу ChatGPT распаковать его, я получаю: Метаданных для значков больше нет.
Есть ли способ получить только несжатый XML с метаданными?

Подробнее здесь: https://stackoverflow.com/questions/798 ... n-metadata
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»