Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign Skriptwerkstatt » XML Attribut per JavaScript ändern

XML Attribut per JavaScript ändern

madoho
Beiträge gesamt: 143

26. Okt 2011, 13:04
Bewertung:

gelesen: 1786

Beitrag als Lesezeichen
Hallo zusammen,
ich habe folgendes Problem: bekomme ein XML, darin sind mit <image src="xyz.jpg"/> Bilder definiert. Lief jetzt 3 Wochen problemlos, bis der erste Dateinamen mit einem Sonderzeichen in Namen "xyzÜzyx.jpg". Daraus wird in InDesign dann "xyz¸zyx.jpg" und jetzt mag InDesign die XML dann nicht mehr importieren.

Jetzt versuche ich vorher die Dateinamen voher zu escapen. Funktioniert auch (siehe Skript). Nur bekomm ich's nicht hin, den escapten String wieder in das Attribut zu schreiben!

Dafür scheint es keine JavaScript-Funktion zu geben… zumindest finde ich nix im Objektmodell-Viewer.

Bitte um Hilfe!

Code
var _xmlFile = File.openDialog ("Bitte XML auswählen!"); 

_xmlFile.open("r");

var _text = _xmlFile.read();

_xmlFile.close();

var _importXML = XML (_text);

var myImages = _importXML.descendants ("image");

alert(myImages);

//~ Da hab ich dann alle <image/>-Tags aus meiner XML drin.

for (i = 0; i < myImages.length(); i++) {

var myFileName = myImages[i].attribute ("src");

alert(myFileName);

var myEscFileName = escape (myImages[i].attribute ("src"));

alert(myEscFileName);

//~  Tut auch noch!

//~ Ab hier weiß ich nimmer weiter :(

}

XML Attribut per JavaScript ändern

gfellenz
Beiträge gesamt: 120

26. Okt 2011, 14:05
Bewertung:

gelesen: 1768

Beitrag als Lesezeichen
hallo,

bevor du weitermachst: Werden denn andere Sonderzeichen (z.B. im Textfluss) angezeigt?

Wenn nicht, hast du primär ein Encoding Problem. Du kannst vor dem open("r") z.B. mit:

Code
_xmlFile.encoding = "UTF8"; 


das Encoding einstellen. Im JavaScript Tools Guide (Hilfe des ExtendScriptToolkit) sind weitere Encodings zu finden.

Ansonsten würde dein Skript wie folgt aussehen:

Code
var _xmlFile = File.openDialog ("Bitte XML auswählen!");  
_xmlFile.open("r");
var _text = _xmlFile.read();
_xmlFile.close();

var _importXML = XML (_text);
var myImages = _importXML.descendants ("image");

for (i = 0; i < myImages.length(); i++) {
myImages[i].@src = escape (myImages[i].@src);
}

// Jetzt die Datei wieder schreiben.
_xmlFile.open("w");
// unicode signature, this is UTF16 but will convert to UTF8 "EF BB BF"
_xmlFile.write("\uFEFF");
_xmlFile.lineFeed = "unix";
_xmlFile.write('<?xml version="1.0" encoding="UTF-8"?>');
_xmlFile.write(_importXML.toXMLString());
_xmlFile.close();

--
Grüße aus Köln,
Gregor Fellenz
http://www.indesignblog.com

XML Attribut per JavaScript ändern

madoho
Beiträge gesamt: 143

31. Okt 2011, 10:37
Bewertung:

gelesen: 1697

Beitrag als Lesezeichen
Hallo…
perfekt! Vielen Dank! So funktioniert's den Wert wieder zurück zu schreiben.