0

.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 スニペット ファイルとして読み取られなくなります。処理命令は次のとおりです。

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

新しいファイルで処理命令を読み取る方法を理解するのを手伝ってくれる人はいますか?

素早い返信ありがとうございます。このプロパティをフラッシュとして作成したにもかかわらず、処理命令を無視し続けています。

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();
4

1 に答える 1

0

XMLクラスには、ファイルを読み込む前に設定を試みることができる静的プロパティignoreProcessingInstructions(デフォルトでは true) があります。このヘルプ ページを参照してください。

XML オブジェクトはルート ノードで開始されるため、 Google で検索した後、ルート ノードの外部で処理命令を使用できない可能性があるようです。その場合、ファイルを標準テキストとして読み取り、ルート ノードの前に処理行を保存してから、実際の XML コンテンツを書き込む前にそれらを出力ファイルに書き込む必要があります。

于 2013-07-24T17:49:59.090 に答える