2013-07-24 4 views
0

Нам нужно изменить/обновить атрибут 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(); 
+0

Когда вы говорите «игнорируя инструкцию по обработке», что именно вы имеете в виду? Как это относится к InDesign? Вы говорите, что выход XML не содержит инструкции обработки, и это приводит к тому, что InDesign не может прочитать файл? –

ответ

0

Существует статическое свойство в XML класса под названием ignoreProcessingInstructions (что верно по умолчанию), которые вы можете попробовать настройки перед чтением в файле. См. this help page.

После некоторого Google-ing выяснилось, что инструкции обработки за пределами корневого узла могут быть недоступны, поскольку объект XML начинается с корневого узла. В этом случае вам, возможно, придется прочитать файл в виде стандартного текста, сохранить строки обработки перед корневым узлом, а затем записать их в выходной файл, прежде чем писать фактическое содержимое XML.

+0

Я изменил код в соответствии с заданием, но это не помогло. Я обновил свой вопрос новыми строками. – mmmathur

Смежные вопросы