[GastForen Programmierung/Entwicklung JavaScript [InD. CS5 Server][JS] XML-Parser

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

[InD. CS5 Server][JS] XML-Parser

Sybriz
Beiträge gesamt: 2

28. Sep 2010, 10:26
Beitrag # 1 von 4
Bewertung:
(3449 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Servus!

Folgende Sache: Ich hab versucht mit dem ESTK auf dem InDesign CS5 Server eine Dummy-XML auszulesen, mit folgendem kleinen Script:

Code
var myXmlFile = new File("../path/blubb.xml"); 
var myContent;

myXmlFile.open("r", undefined, undefined);

while(!myXmlFile.eof)
{
myContent = myXmlFile.read();
var xml_value = myContent.childNodes[0].getElementsByTagName('ROOT').nodeValue;

//var xml_value = myContent.getElementsByTagName('ROOT').item(0).firstChild.nodeValue;

alert(xml_value);
}



Die XML sieht folgendermaßen aus:

Code
<?xml version="1.0" encoding="UTF-8"?> 
<ROOT>
<TEST>blubb</TEST>
<TEST2>bla</TEST2>
</ROOT>


Wenn ich mir nun die Variable "myContent" ausgeben lasse, bekomm ich im Terminal die gesamte XML angezeigt und in der Console im ESTK steht "Execution finished. Ergebnis: undefined". (Wieso eigentlich unfinished?! Wird doch richtig angezeigt...)

Jedenfalls hab ich versucht mir paar Values, bzw Knoten ausgeben zu lassen mit verschiedenen Funktionen aus verschiedenen Javascript-XML-Tutorials, aber jedesmal kommt der Fehler "myContent.getElementsByTagName is not a function" (oder halt so ähnlich, jenachdem welche Funktion ich anwenden wollte).
Also hab ich ein bisschen ohne die Funktionen rumgebastelt, so zum beispiel so:

Code
var xml_value = myContent.item[0]; 


oder in anderen Zusammensetzungen mit "firstChild", "item[x]" und "nodeValue", aber da erhalt ich jedesmal die Fehlermeldung "undefined is not an object".

Kann mir irgendjemand einen Tipp geben wie ich auf die Knotenpunkte, bzw. Daten der XML zugreifen kann? Ich bin PHP-Entwickler, hab also vorher noch nie mit InDesign Server oder Javascript in dieser ZUsammensetzung gearbeitet und irgendeinen bösen Denkfehler muss ich ja gemacht haben, wenn aus x Quellen nichts funktioniert...


Ich hab eigentlich vor XML's von CS2-Dokumenten zu parsen und daraus neue CS5-Dokumente zu generieren mit neuem Design, etc. Aber häng eben schon am ersten Schritt, dem XML parsen. =(

Vielen Dank schonmal im Vorraus!


Gruß
Sybriz
X

[InD. CS5 Server][JS] XML-Parser

Marc Sidon
Beiträge gesamt: 262

30. Sep 2010, 14:45
Beitrag # 2 von 4
Beitrag ID: #452878
Bewertung:
(3393 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich bin mir nicht sicher, ob es das Einzige ist, was Du machen musst, aber erst einmal solltest Du aus dem String ein XML-Objekt erzeugen....

Dann könntest Du das Lesen der Datei auch einfacher haben.

Ich würde folgenden Code vorschlagen:

Code
var myXmlFile = new File("../path/blubb.xml");  
var myContent = "";

var isOpen = myXmlFile.open("r", undefined, undefined);
if (isOpen) {
myContent = myXmlFile.read();
myXmlFile.close();
}

if (myContent != "") {
// Jetzt aus dem String ein XML-Objekt machen...
var thisXML = new XML (myContent);

// Und jetzt kannst Du Dir den Inhalt holen...
var xmlUnterelemente = thisXML.child('ROOT').children();

for (var i=0; i<xmlUnterelemente.length(); i++) {
var xmlElem = xmlUnterelemente[i];
alert(xmlElem);
}

// Du kannst auch mit xpath arbeiten
var xmlRootElement = thisXML.xpath("/ROOT");
var xmlUnterlemente = xmlRootElement.children();

for (var i=0; i<xmlUnterelemente.length(); i++) {
var xmlElem = xmlUnterelemente[i];
alert(xmlElem);
}

}


Was Du dann sonst noch so alles mit dem XML-Objekt machen kannst, findest Du in der Hilfe des ESTK unter "Core Javascript Classes" und dann "XML"....

Gruß,
Marc Sidon


als Antwort auf: [#452621]
(Dieser Beitrag wurde von Marc Sidon am 30. Sep 2010, 15:01 geändert)

[InD. CS5 Server][JS] XML-Parser

Marc Sidon
Beiträge gesamt: 262

30. Sep 2010, 15:41
Beitrag # 3 von 4
Beitrag ID: #452883
Bewertung:
(3370 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
P.S.:

Fragen, die InDesign & Co. betreffen, solltest Du lieber im "InDesign-Forum" oder der "Adobe InDesign Skriptwerkstatt" stellen, da hier die meisten zurecht nicht wissen werden, was Du mit ESTK meinst...

Oder mit Martins Worten:

Zitat von Martin Fischer Übrigens: im JavaScript-Forum wird vorwiegend über JavaScript-Anwendungen für Webseiten diskutiert. Die Adobe InDesign Skriptwerkstatt hingegen konzentriert sich auf die Diskussion von Skripten (JavaScript und AppleScript) für InDesign. Für Dich als InDesign-Anwender dürfte die InDesign Skriptwerkstatt die geeignetere Anlaufstelle für Skriptfragen InDesign betreffend sein.


http://www.hilfdirselbst.ch/...nDesign_Forum_4.html

Gruß,
Marc Sidon


als Antwort auf: [#452621]
(Dieser Beitrag wurde von Marc Sidon am 30. Sep 2010, 15:46 geändert)

[InD. CS5 Server][JS] XML-Parser

Sybriz
Beiträge gesamt: 2

5. Okt 2010, 08:23
Beitrag # 4 von 4
Beitrag ID: #453187
Bewertung:
(3313 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

sry dass ich erst jetzt antwort, aber war nicht erreichbar.
Danke auf jeden Fall für deine schnelle Antwort, ich habs ausprobiert und es funktioniert auch =)

Wusst nicht, ob das in die Scriptwerkstatt gehört, weil ich dacht dort sind nur die Scripte, die man in InDesign direkt ausführen kann drin. Is ja dochn bissel was anderes als der Server, aber werds in Zukunft beachten!

Danke nochmal und Gruß
Sybriz


als Antwort auf: [#452883]
X