[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt XML Attribut per JavaScript ändern

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

XML Attribut per JavaScript ändern

madoho
Beiträge gesamt: 148

26. Okt 2011, 13:04
Beitrag # 1 von 3
Bewertung:
(1818 mal gelesen)
URL zum Beitrag
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 :(

}

X

XML Attribut per JavaScript ändern

gfellenz
Beiträge gesamt: 121

26. Okt 2011, 14:05
Beitrag # 2 von 3
Beitrag ID: #483092
Bewertung:
(1800 mal gelesen)
URL zum Beitrag
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();



als Antwort auf: [#483082]

XML Attribut per JavaScript ändern

madoho
Beiträge gesamt: 148

31. Okt 2011, 10:37
Beitrag # 3 von 3
Beitrag ID: #483436
Bewertung:
(1729 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo…
perfekt! Vielen Dank! So funktioniert's den Wert wieder zurück zu schreiben.


als Antwort auf: [#483092]