5.4 Загрузка данных в форму из XML
Для загрузки данных из документа XML в форму ввода необходимо использовать команду setIframesContent, которая позволяет загрузить данные из структурированных данных XML в форму ввода. Например, команда может быть использована для редактирования ранее сформированных данных, которые хранятся в виде XML в карточке ранее созданного документа-черновика.
Команда: setIframesContent
Действие:
Загружает данные из строки с заполненной XML-структурой документа в форму редактирования. После выполнения команды в форме редактирования автоматически устанавливается форма необходимого вида документа и заполняется данными из XML.
Параметры:
- data (объект): {
- xml (строка)};
Требования к содержимому строки XML:
Данные документа в структуре XML могут быть заполнены не полностью, если ранее ввод документа не был завершен. Загрузка данных выполняется там, где это возможно, исходя из заполненных элементов и атрибутов.
Пример реализации в JavaScript:
<script>
//функция, которая выполняется при нажатии кнопки «Загрузить в форму из файла»
function setDigitalXML() {
//Получаем файл в переменную file
let file = document.querySelector('#file').files[0];
var txtXML = '';
//Создаем объект FileReader для считывания файла
var reader = new FileReader();
//При успешном чтении файла выполняем функцию
reader.onload = function(evt) {
// Присваиваем в переменную txtXML содержимое файла XML
txtXML = evt.target.result;
//Получение открытого окна редактора цифровых документов по id=”editor”
let editorWindow = document.querySelector('#editor').contentWindow;
// Отправка команды в открытое окно редактора: setIframesContent
// Параметры: data.xml = строка содержимого XML
editorWindow.postMessage({
system_id: 'GosedoPortal',
data: {
action: 'setIframesContent',
data: { xml: txtXML}
}
},
'*');
}
// считываем файл
reader.readAsText(file);
}
</script>
<!-- фрейм с подключенной формой редактирования данных Портала ГосЭДО-->
<iframe width="1000px" height="700px" id="editor" src="http://10.77.142.21:84/#/constructor/selector/?theme=light">
<!--поле выбора файла XML (digital.xml)-->
<input id="file" type="file">
<!-- кнопка «Загрузить в форму из файла»-->
<button onclick="setDigitalXML()"> Загрузить в форму из файла</button>
С выполнением демонстрационного примера по описанной функции можно ознакомиться в разделе 4.4 Демонстрация загрузки данных из файла XML в редактор.