Как экспортировать содержимое между тегами XML на основе имен в Extendscript для Indesign? - PullRequest
0 голосов
/ 27 сентября 2018

Все, что я хотел бы здесь сделать, - это открыть файл 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 Ответ

0 голосов
/ 23 октября 2018

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" );
...