Как добавить содержимое в элемент xml?
Мне нужно вставить слово sqrt
(обычный текст без тегов) в элементе xml m:msqrt
как ниже:
Я старался:
var path = (app.activeDocument.fullName.parent.fsName).toString().replace(/\\/g, '/');
//path of active document(sample.indd)
var xmlPath = (app.activeDocument.fullName.parent.fsName).toString().replace(/\\/g, '/')+"/with_aid2.xml";
xmlFile = File (xmlPath);
if(xmlFile.exists){
xmlFile.open();
var myString = xmlFile.read();
xmlFile.close();
myXml = new XML ();
myXml = XML(myString);
var msqrtCount = myXml.xpath("//m:msqrt");
}else{alert(xmlPath+" doesn't exist!");}
for(var i=0;i<msqrtCount.length();i++){
var added = msqrtCount[i];
added.contents="sqrt";
}
Я получаю сообщение об ошибке говорит, что недопустимое содержание
1 ответ
Я не совсем понимаю. Вы пытаетесь добавить текст в документ InDesign или в файл XML, который импортируете в документ InDesign? Представленный вами код, по-видимому, обращается к файлу XML, загружает его в память и затем пытается добавить текст к тегу в файле XML. Я бы справился с этим вне InDesign, если это ваша цель.
Если вы хотите добавить текст в отмеченную область в документе InDesign, используйте обработку правил XML, как показано ниже:
#include "glue code.jsx"
var myDocument = app.activeDocument;
addContent(myDocument, "new content");
function addContent(myDocument, myContent){
var myRuleSet = new Array(new addContentToTag);
with(myDocument){
var elements = xmlElements;
__processRuleSet(elements.item(0), myRuleSet);
}
function addContentToTag(){
this.name = "addContentToTag";
this.xpath = "/Root/Story/Tag";
this.apply = function(myElement, myRuleProcessor){
myElement.contents = myContent;
return true;
};
}
}
(Обратите внимание, что файл glue code.jsx включен. Он должен находиться в каталоге сценариев, чтобы обработка правил XML работала правильно).