Когда вы находитесь в панели «Структура» в Indesign, вы можете экспортировать ее как XML.
Используя функцию exportFile, поддерживаемую extendscript, я смог записать файл в файл.
Мне нужен способ превратить этот XML в переменную, не записывая файл на свой диск.
Есть ли способ сделать это ? Что мне не хватает?





И да и нет. Самым простым достижением будет экспорт документа в виде файла 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 и передать эти значения объекту. Но это было бы действительно громоздко, имхо.
Элементы структуры называются 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)