Как экспортировать содержимое между тегами xml на основе имен в Extendscript для Indesign?

Все, что я хотел бы здесь сделать, - это открыть файл InDesign 2018 CC, вытащить текст уникальным образом (здесь я выбрал захват содержимого внутри тега XML с названием "Заголовок" из окна именованного тега на стороне приложения InDesign), сохранение его в текстовый файл и закройте документ InDesign. Я работаю в приложении Extendscript, используя Adobe InDesign CC 2018 (13.064). Мне просто нужно отправить в текстовый файл только определенные именованные данные (текстовые поля, xmltags, Pageitems и т. Д.) Содержимое, основанное на чем-либо, но через имя держателя данных. Но xmltags - это единственные объекты, которые я могу назвать в приложении InDesign, кроме слоев, и слои не будут работать по другим причинам. Поэтому я не могу ссылаться на содержимое с тегами xml. Пожалуйста помоги.

Замечания:

  1. Я получаю сообщение об ошибке с этим кодом, говорящее, что "Заголовок" не определен, и я понимаю ошибку, но не уверен, как использовать метод XML.toString(), не обращаясь к объекту, который назван в файле InDesign. Итак, я думаю, что я использую неправильный метод для ссылки на данные с тегами XML, уже находящиеся в файле?
  2. Естественно, я выбрасываю 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" );

Другие вопросы по тегам