Как экспортировать XML из структуры в объект, а не в файл, используя extensionscript

Когда вы находитесь на панели «структура» в Indesign, вы можете экспортировать ее в формате XML.

Экспорт XML

Используя функцию exportFile, поддерживаемую extendscript, я смог записать файл в файл.

Мне нужен способ получить этот XML в переменной без записи файла на диск.

Есть ли способ сделать это ? Что мне не хватает?


person El Dorado    schedule 18.06.2018    source источник


Ответы (2)


И да и нет. Самым простым достижением было бы экспортировать документ в виде XML-файла. Затем загрузите файл XML как объект, например:

var xmlFile = File ( Folder.desktop+"/myXML.xml" );
app.activeDocument.exportFile ( ExportFormat.XML, xmlFile );
xmlFile.open('r');this 
var xmlObject = XML ( xmlFile.read() );
xmlFile.close();
xmlFile.remove();
alert( xmlObject.toXMLString() );

Но, конечно, вы можете попытаться построить этот объект xml без прохождения через этот внешний объект при просмотре объектов InDesign DOM XMLElements и передать эти значения объекту. Но это было бы очень громоздко, имхо.

person Loic    schedule 19.06.2018

Элементы структуры называются XMLElements

Корнем структуры будет app.documents[0].xmlElements[0]

Вы можете выбрать элемент, используя метод evaluateXPathExpression объекта XMLElement, передав выражение xpath для выбора узла XML. Выбранный элемент может быть присвоен переменной как объекту

var myXmlSelection = app.documents[0].xmlElements[0].evaluateXPathExpression("/book/chapter")[0];

Вы можете использовать метод placeXML для размещения ссылочного элемента в текстовом фрейме.

myXMLElement.placeXML(myTextFrame)
person Nicolai Kant    schedule 19.06.2018