Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
sideshow •-->
![•--> •-->](/phpBB2/images/ranks/ranki1.gif)
![](images/avatars/753359314433bd6adc2094.jpg)
Anmeldedatum: 07.05.2002 Beiträge: 130
|
Verfasst am: 15.01.2008 - 15:25 Titel: OSAX dem Projekt hinzufügen |
|
|
Hallo Forum,
ich bin mit meiner Applikation jetzt schon recht weit. Nun stehe ich vor dem Problem, das ich eine XML Datei parsen will. Zu diesem Thema habe ich eine (wie mir scheint) recht gute OSAX gefunden:
http://www.latenightsw.com/freeware/XMLTools2/
Lade ich das .dmg herunter findet sich eine Datei "XML Tools.osax" darin. Meine Frage ist nun: kann man diese der Applikation hinzufügen damit meinem Programm zugänglich machen, oder müssen OSAX generell erst auf der Maschine "installiert" werden? Da mein Programm ja nicht nur auf meinem Rechner laufen soll sonder z.B. noch auf einem anderen Rechner. Wenn ich dann zuerst auf diesem Rechner die OSAX installieren muss ist das blöd!
Vielen Dank im Voraus für Infos aller Art!
Viele Grüße,
sideshow _________________ Meine Wenigkeit im Internet: http://www.sideshow-systems.de |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
Skeeve •---->
![•----> •---->](/phpBB2/images/ranks/ranki3.gif)
![](images/avatars/109842322644abb04db262b.gif)
Anmeldedatum: 20.04.2006 Beiträge: 1067
|
Verfasst am: 15.01.2008 - 15:43 Titel: Re: OSAX dem Projekt hinzufügen |
|
|
Da ich keine OSAXen, aus genau dem Grund, daß ic nicht weiß, ob sie auf dem Zielsystem vorhanden ist, verwende, kann ich dir keine fundierte Antwort geben, sondern nur gut(?) raten.
Wenn ich ein Programm Bundle erstellen lasse, in meinem Fall nicht mit AppleScript Studio sondern mit dem ScriptEditor, dann kann ich anschließend in das Paket hinein andere Dateien legen.
Dazu gehe ich über das Finder-Kontextmenü des Programm Bundles -> Paketinhalt zeigen.
Dort gibt es dann Contents/Resources/. In diesem Verzeichnis kann man sich alles benötigte ablegen.
Den Pfad dorthin liefert:
path to resource "resourcename"
Also um z.B. den Pfad zum Scripts Verzeichnis zu erhalten verwende ich
path to resource "Scripts" _________________ "All problems are solved in slightly less than half an hour" (Chumbawamba, "Hey Hey We're The Junkies") |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
sideshow •-->
![•--> •-->](/phpBB2/images/ranks/ranki1.gif)
![](images/avatars/753359314433bd6adc2094.jpg)
Anmeldedatum: 07.05.2002 Beiträge: 130
|
Verfasst am: 15.01.2008 - 15:54 Titel: |
|
|
So habe ich mir das auch gedacht. Da das aber meine momentanen Kenntnisse bei weitem übersteigt ziehe ich lieber eine andere Lösung des Problems vor.
Habe gerade entdeckt das man mit System Events auch XML Dateien parsen kann. Ich glaube das reicht für meine Bedürfnisse. Werde das mit der OSAX inkludieren mal irgendwann testen!
Danke trotzdem! ![Smile](images/smiles/icon_smile.gif) _________________ Meine Wenigkeit im Internet: http://www.sideshow-systems.de |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
Skeeve •---->
![•----> •---->](/phpBB2/images/ranks/ranki3.gif)
![](images/avatars/109842322644abb04db262b.gif)
Anmeldedatum: 20.04.2006 Beiträge: 1067
|
Verfasst am: 15.01.2008 - 16:04 Titel: |
|
|
Ich sag Dir gleich: XML Parsen mit AppleScript ist kein Vergnügen!
Wie sehen denn Deine XML Dateien aus? Was mußt Du beim Parsen (denn damit wird es ja nicht getan sein) mit denen machen?
Eventuell würde ich sonst nämlich raten:
1. saxon (Java) einbinden
2. XSLT Datei dazu
3. per "do shell script" aufrufen
4. ERgebnis entgegennehmen _________________ "All problems are solved in slightly less than half an hour" (Chumbawamba, "Hey Hey We're The Junkies") |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
sideshow •-->
![•--> •-->](/phpBB2/images/ranks/ranki1.gif)
![](images/avatars/753359314433bd6adc2094.jpg)
Anmeldedatum: 07.05.2002 Beiträge: 130
|
Verfasst am: 15.01.2008 - 16:29 Titel: |
|
|
Skeeve hat Folgendes geschrieben: | Ich sag Dir gleich: XML Parsen mit AppleScript ist kein Vergnügen! |
Meine Fresse - das stimmt!
Das nervt gewaltig. Und irgendwie komme ich auf kein Ergebnis. Habe zwar ein super Beispiel gefunden das auch gut funktioniert, kann es aber leider nicht auf meine Bedürfnisse umstricken. Hier die Seite:
http://mac.delta-c.de/node/974
Skeeve hat Folgendes geschrieben: |
Wie sehen denn Deine XML Dateien aus? Was mußt Du beim Parsen (denn damit wird es ja nicht getan sein) mit denen machen?
|
Die XML Datei ist eigentlich total popelig - sieht so aus:
Code: |
<?xml version="1.0" standalone="yes">
<artikel>
<info>
<id>123456789</id>
<kw>200803</kw>
<ausgabe>wsp</ausgabe>
<headline>Die Überschrift des Artikels</headline>
<stadtteil>Pasing</stadtteil>
<typ>1</typ>
</info>
...
</artikel>
|
Hier möchte ich dann eigentlich nur id, kw, ausgabe, headline, etc... aus dem XML rausziehen und in eine AS Variable speichern.
Wenn ich versuche das Beispielscript irgendwie umzubauen:
Code: |
set xmlfile to XML file theFile
set info_block to XML element "info" of XML element "artikel" of contents of xmlfile
|
Erhalte ich leider nur Fehler:
System events got an error: Can't get XML element "artikel" of XML file ... url ...
Skeeve hat Folgendes geschrieben: |
Eventuell würde ich sonst nämlich raten:
1. saxon (Java) einbinden
2. XSLT Datei dazu
3. per "do shell script" aufrufen
4. ERgebnis entgegennehmen
|
Mehr als das kann ich leider nicht dazu sagen! ![Wink](images/smiles/icon_wink.gif) _________________ Meine Wenigkeit im Internet: http://www.sideshow-systems.de |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
Skeeve •---->
![•----> •---->](/phpBB2/images/ranks/ranki3.gif)
![](images/avatars/109842322644abb04db262b.gif)
Anmeldedatum: 20.04.2006 Beiträge: 1067
|
Verfasst am: 15.01.2008 - 17:37 Titel: |
|
|
Kommen diese Elemente öfter vor, oder nur einmal? Vielleicht reicht ja auch schon ein kleines Perl Script. _________________ "All problems are solved in slightly less than half an hour" (Chumbawamba, "Hey Hey We're The Junkies") |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
Skeeve •---->
![•----> •---->](/phpBB2/images/ranks/ranki3.gif)
![](images/avatars/109842322644abb04db262b.gif)
Anmeldedatum: 20.04.2006 Beiträge: 1067
|
Verfasst am: 15.01.2008 - 17:48 Titel: |
|
|
Hab es gerade mal ausprobiert.
SOOO kompliziert ist dieser Fall doch nicht:
Zitat: | tell application "System Events"
set datei to XML file "/Users/skeeve/Desktop/X-Ampel.xml"
tell contents of datei
tell XML element "artikel"
tell XML element "info"
set headline to value of XML element "headline"
end tell
end tell
end tell
end tell
|
P.S. Beachte aber, daß Deine XML Datei nicht zu parsen ist, weil die erste Zeile einen Fehler enthält! _________________ "All problems are solved in slightly less than half an hour" (Chumbawamba, "Hey Hey We're The Junkies") |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
sideshow •-->
![•--> •-->](/phpBB2/images/ranks/ranki1.gif)
![](images/avatars/753359314433bd6adc2094.jpg)
Anmeldedatum: 07.05.2002 Beiträge: 130
|
Verfasst am: 15.01.2008 - 17:54 Titel: |
|
|
Das mit der ersten Zeile dachte ich mir schon - war mir aber nicht ganz sicher... mh... Danke dir auf jeden Fall. Ich werde das mal ausprobieren.
Die Element kommen zum Glück nur einmal vor - deswegen habe ich mir gedacht man könnte das auch mittels Shell-Kommando machen. Habe ich jetzt in der Form:
Code: |
egrep "^<id>.*<\/id>$" /pfad/zur/xml/datei/200803/texte/123456789.rxt |sed 's/<.id>//g' |sed 's/<id>//g'
|
So würde ich jetzt die ID bekommen. Man, ist das alles kompliziert... muss ich mir morgen noch mal in Ruhe anschauen. Heute ist mein Kopf zu voll.
Erst mal den Live-Ticker zur Keynote anschauen!
Vielen Dank und schönen Gruß,
sideshow _________________ Meine Wenigkeit im Internet: http://www.sideshow-systems.de |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
Skeeve •---->
![•----> •---->](/phpBB2/images/ranks/ranki3.gif)
![](images/avatars/109842322644abb04db262b.gif)
Anmeldedatum: 20.04.2006 Beiträge: 1067
|
Verfasst am: 15.01.2008 - 18:03 Titel: |
|
|
sideshow hat Folgendes geschrieben: | deswegen habe ich mir gedacht man könnte das auch mittels Shell-Kommando machen. |
Kann man, aber man sollte es nicht so einfach angehen, wie Du es getan hast. Das schlägt nämlich dann schon fehl, wenn in dem Text ein Zeilenumbruch vorkommt oder wenn z.B. einer in einem der Elemente erscheint. Außerdem mußt Du auf die Art die Datei für jedes Element erneut grep-en. _________________ "All problems are solved in slightly less than half an hour" (Chumbawamba, "Hey Hey We're The Junkies") |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
sideshow •-->
![•--> •-->](/phpBB2/images/ranks/ranki1.gif)
![](images/avatars/753359314433bd6adc2094.jpg)
Anmeldedatum: 07.05.2002 Beiträge: 130
|
Verfasst am: 16.01.2008 - 09:49 Titel: |
|
|
Skeeve hat Folgendes geschrieben: | sideshow hat Folgendes geschrieben: | deswegen habe ich mir gedacht man könnte das auch mittels Shell-Kommando machen. |
Kann man, aber man sollte es nicht so einfach angehen, wie Du es getan hast. Das schlägt nämlich dann schon fehl, wenn in dem Text ein Zeilenumbruch vorkommt oder wenn z.B. einer in einem der Elemente erscheint. Außerdem mußt Du auf die Art die Datei für jedes Element erneut grep-en. |
Ja, da hast du recht - man muss für jedes "tag" die Datei neu greppen. Das Problem mit den Zeilenumbrüchen habe ich nicht, aber du hast trotzdem recht!
Ich werde mir aber mal die XML Variante von dir anschauen - sieht sehr interessant aus - und wirklich nicht so schwer! ![Smile](images/smiles/icon_smile.gif) _________________ Meine Wenigkeit im Internet: http://www.sideshow-systems.de |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
Heiner •-->
![•--> •-->](/phpBB2/images/ranks/ranki1.gif)
Anmeldedatum: 03.12.2005 Beiträge: 62 Wohnort: Moers
|
Verfasst am: 20.01.2008 - 17:52 Titel: |
|
|
Hallo,
ich habe bei Matt Neuburg, Applescript unter 'Loading Scripting Additions' folgendes gefunden:
"Save your script as an Application bundle; then open the bundle with Show Package Contents and create Contents/Resources/Scripting Additions, and copy any needed osaxen into this folder."
(Ist ja schon von euch erwähnt worden. Und weiter:)
"There is also a trick that allows your script to force osaxen to be loaded again, while the script is running. Here it is:
Code: | try
tell me to << event ascrgdut>>
end try |
This raw Apple event, for which there is no equivalent English-like terminology, tells the current AppleScript scripting component instance to refresh its knowledge of scripting additions. It's enclosed in a try block because it will probably generate an error, but the error is spurious; the command works, and any oaxen that were installed since scripting components was instantiated will be loaded."
Vielleicht ist dieser Artikel eine Hilfe für euch.
Heiner |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
|