Нам нужно изменить/обновить атрибут xml файла .idms. используя actioncript. Я использую подход ниже, чтобы сделать это.Обновить атрибут узла XML-файла в actionscript
protected function windowedapplication1_creationCompleteHandler(event:FlexEvent):void
{
var file:File = File.desktopDirectory.resolvePath('myInputFile.xml');
var fileStream:FileStream = new FileStream();
fileStream.open(file, FileMode.READ);// doesn't read processing instrunction
var xml:XML = new XML(fileStream.readUTFBytes(fileStream.bytesAvailable));
fileStream.close();
var writeStream:FileStream = new FileStream();
writeStream.open(file, FileMode.WRITE);
for each(var node:XML in xml.descendants("*"))
{
if(node.localName() == "Link")
{
var linkfile:[email protected] = "file:/Shared/Logos/Bk.ai";
}
}
writeStream.writeUTFBytes(String(xml));
writeStream.close();
}
В приведенной выше проблеме кода заключается в том, что она не считывает инструкцию обработки поверх xml-файла. в результате после записи xml-файла он больше не будет читать файл как файл описания InDesign. обработки instrunctions являются:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
Может кто-нибудь помочь мне понять, как я могу читать instrunction обработки, а также в новом файле?
Благодарим за быстрый ответ, но, несмотря на то, что я сделал это свойство как flase, он игнорирует процесс обработки.
var file:File = File.desktopDirectory.resolvePath('031413115849909.idms');
var fileStream:FileStream = new FileStream();
XML.ignoreProcessingInstructions = false; //newly added
fileStream.open(file, FileMode.READ);
var xml:XML = new XML(fileStream.readUTFBytes(fileStream.bytesAvailable));
fileStream.close();
Когда вы говорите «игнорируя инструкцию по обработке», что именно вы имеете в виду? Как это относится к InDesign? Вы говорите, что выход XML не содержит инструкции обработки, и это приводит к тому, что InDesign не может прочитать файл? –