【问题标题】:Update xml file node attribute in actionscript更新动作脚本中的 xml 文件节点属性
【发布时间】:2013-07-24 08:03:28
【问题描述】:

我们需要修改/更新 .idms 文件的 xml 属性。使用动作脚本。我正在使用以下方法来做到这一点。

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:String=node.@LinkResourceURI = "file:/Shared/Logos/Bk.ai";
                }
            }
            writeStream.writeUTFBytes(String(xml));
            writeStream.close();

        }

上面的代码问题是它没有读取xml文件顶部的处理指令。结果写入 xml 文件后,它不会再将文件作为 InDesign sn-p 文件读取。 处理指令为:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

谁能帮我弄清楚如何在新文件中读取处理指令?

感谢您的快速回复,但即使我将此属性设置为 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 无法读取文件?

标签: actionscript-3 apache-flex actionscript adobe-indesign


【解决方案1】:

XML 类中有一个名为 ignoreProcessingInstructions 的静态属性(默认情况下为 true),您可以在读取文件之前尝试设置该属性。见this help page

Google-ing 之后,似乎根节点之外的处理指令可能不可用,因为 XML 对象从根节点开始。在这种情况下,您可能必须将文件作为标准文本读取,将处理行保存在根节点之前,然后在写入实际 XML 内容之前将它们写入输出文件。

【讨论】:

  • 我已经按照给定的指令修改了代码,但没有帮助。我已经用新行更新了我的问题。
猜你喜欢
  • 1970-01-01
  • 2018-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多