Как экспортировать содержимое между тегами xml на основе имен в Extendscript для Indesign?
Все, что я хотел бы здесь сделать, - это открыть файл InDesign 2018 CC, вытащить текст уникальным образом (здесь я выбрал захват содержимого внутри тега XML с названием "Заголовок" из окна именованного тега на стороне приложения InDesign), сохранение его в текстовый файл и закройте документ InDesign. Я работаю в приложении Extendscript, используя Adobe InDesign CC 2018 (13.064). Мне просто нужно отправить в текстовый файл только определенные именованные данные (текстовые поля, xmltags, Pageitems и т. Д.) Содержимое, основанное на чем-либо, но через имя держателя данных. Но xmltags - это единственные объекты, которые я могу назвать в приложении InDesign, кроме слоев, и слои не будут работать по другим причинам. Поэтому я не могу ссылаться на содержимое с тегами xml. Пожалуйста помоги.
Замечания:
- Я получаю сообщение об ошибке с этим кодом, говорящее, что "Заголовок" не определен, и я понимаю ошибку, но не уверен, как использовать метод XML.toString(), не обращаясь к объекту, который назван в файле InDesign. Итак, я думаю, что я использую неправильный метод для ссылки на данные с тегами XML, уже находящиеся в файле?
- Естественно, я выбрасываю XML.toString() и использую закомментированный код (ниже) "app.activeDocument.xmlItems.item;" подумав, может быть, я получу массив всех элементов, помеченных тегом xml, который даже не достаточно конкретен для моей цели, но я в отчаянии, и я получаю еще одну более новую ошибку, касающуюся строки кода "exportfile": myArticles.exportFile() это не функция.
Мой код до сих пор:
app.open(File("C:/Users/Sean/Desktop/New folder/va tech 2.indd"), true);
myArticles = Title.toString();
//THIS ATTEMPT WON'T WORK EITHER AS RPLCMNT FOR LINE ABOVE: myArticles= app.activeDocument.xmlItems.item;
myArticles.exportFile(ExportFormat.textType, new File("/C/Users/Sean/Desktop/New folder/test.txt"), false);
app.documents.everyItem().close(SaveOptions.NO);
1 ответ
var main = function() {
var doc, root, xes, n, nXE, st, xc, strs = [],
f = File ( Folder.desktop+"/contents.txt" );
try {
//NEED TO CHANGE THE URL. Ex: some/url > /Users/user/Desktop/foo.indd
doc = app.open ( File ( "some/url" ) );
}
catch(err){
alert(err.message);
return;
}
if ( !doc ) {
alert("You need an open document" );
return;
}
root = doc.xmlElements[0];
xes = root.evaluateXPathExpression("//Title");
n = xes.length;
while ( n-- ) {
nXE = xes[n];
xc = nXE.xmlContent;
if ( xc instanceof Story ) {
strs.push( xc.contents );
}
}
if ( strs.length ) {
f.open('w');
f.write ( strs.reverse().join("\r") );
f.close();
}
}
var u;
app.doScript ( "main()",u,u,UndoModes.ENTIRE_SCRIPT, "The Script" );