[GastForen Programmierung/Entwicklung AppleScript XML zu TXT

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

XML zu TXT

swish
Beiträge gesamt: 75

16. Jun 2005, 15:18
Beitrag # 1 von 6
Bewertung:
(1512 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Leutz,

ich habe eine (oder besser tausende) XMLs, die von der structur schön eindeutig sind ...

<object>
<objectID>0001</objectID>
<Bildname>BildWasauchimmer.jpg</Bildname>
<Farbraum>CMYK</Farbraum>
....
....
</object>

Kann man so auf die schnelle ein Script basten, was die ganzen XML-Tags gegen Tabulatoren austauscht, aber trotzdem die allererste Zeile der tabgetrennten Text-Datei einmal alle Tags anzeigt ?

Ungefähr so sollte das Ergebnis sein:

Object....Bildname.........................Farbraum..........
0001......BildWasauchimmer.jpg.....CMYK.........

Wobei die Punkte natürlich für die Tabs stehen.

In der XML sind ne ganze Menge dieser Objecte drin ...

System ist das "Tiger OS" ...

Gruß,

Stephan
X

XML zu TXT

Hans Haesler
  
Beiträge gesamt: 5816

16. Jun 2005, 17:00
Beitrag # 2 von 6
Beitrag ID: #419792
Bewertung:
(1511 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stephan,

"auf die schnelle" ergibt dieser Code (benötigt die Scripting Addition "Satimage.osax") ...
---
set aStr to "<object>
<objectID>0001</objectID>
<Bildname>BildWasauchimmer.jpg</Bildname>
<Farbraum>CMYK</Farbraum>"

set aStr to change "</.*>" in aStr into "" with regexp
set aStr to change "(<)(.*)(>)" in aStr into "\\2" & tab with regexp

---
... dieses Zwischenergebnis:[code:1]object
objectID  0001
Bildname  BildWasauchimmer.jpg
Farbraum  CMYK[/code:1]
Man müsste also noch die Lesereihenfolge umkehren.

Aber: Unter Tiger soll doch dank der XML-Suite das Editieren von XML-Dateien ohne Hilfsmittel
von Drittanbietern möglich sein. Doch habe ich leider bisher keine Zeit gehabt, mich damit
zu beschäftigen. Ich werde einen Versuch machen, kann aber kein Resultat garantieren, bevor ich
morgen Freitagnachmittag in den Urlaub fahren werde.

Gruss, Hans


als Antwort auf: [#419791]

XML zu TXT

swish
Beiträge gesamt: 75

17. Jun 2005, 07:42
Beitrag # 3 von 6
Beitrag ID: #419793
Bewertung:
(1511 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Wie kann ich denn die befehle der xml-suite finden ? Würde mich da gerne auch selber mit beschäftigen. Kann ich da irgendwie ein Funktionsverzeichnis öffnen ?

Vielen Dank schonmal und - falls Du keine Zeit mehr findest - viel Spaß und Erholung in Deinem (wirklich) verdienten Urlaub !

Beste Grüße,

Stephan


als Antwort auf: [#419791]

XML zu TXT

Hans Haesler
  
Beiträge gesamt: 5816

17. Jun 2005, 10:29
Beitrag # 4 von 6
Beitrag ID: #419794
Bewertung:
(1511 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stephan,

die XML-Suite ist (unter Tiger) Bestandteil der "System Events"-Applikation. Du findest das
Wörterbuch am besten wie im Thema "Mac OS X: Verzeichnisse schneller öffnen" beschrieben:
http://www.page-online.de/page/forum/viewthread/2589

Aber es ist nicht so einfach. Hier mein erster Versuch:
---
set testFile to (choose file with prompt "XML-Datei wählen") as string

tell application "System Events"
   set xmlContents to contents of XML file testFile
   set xmlText to text of xmlContents
end tell

---
Dann habe ich probiert, an die Elemente zu kommen. Aber es kam immer nur das erste zurück.
Ich habe etwas herumgeforscht und bin auf folgendes Script gestossen, welches ich etwas
angepasst habe.
---
set xmlRecord to my processData(my getData(), {})

on getData()
   set xmlFile to (choose file with prompt "Eine XML-Datei wählen") as Unicode text
   tell application "System Events" to return (contents of XML file xmlFile)
end getData

on processData(anXML, allProperties)
   tell application "System Events"
      repeat with e in my getElements(anXML)
         set allProperties to my makeRecord(e, allProperties)
      end repeat
      return allProperties
   end tell
end processData

on makeRecord(e, p)
   tell application "System Events"
      set new_e to {XML element:my getName(e)}
      set a to {}
      repeat with i in my getAttributes(e)
         set end of a to {XML attribute:my getName(i), value:my getValue(i)}
      end repeat
      if a is not {} then set new_e to new_e & {xml_attributes:a}
      try
         set new_e to new_e & {value:my getValue(e)}
      end try
      set sub_e to {}
      repeat with i in my getElements(e)
         set sub_e to sub_e & my makeRecord(i, {})
      end repeat
      if sub_e is not {} then set new_e to new_e & {xml_element:sub_e}
      set end of p to new_e
      return p
   end tell
end makeRecord

on getName(d)
   try
      tell application "System Events" to return name of d
   on error
      return ""
   end try
end getName

on getValue(d)
   try
      tell application "System Events" to return value of d
   on error
      return ""
   end try
end getValue

on getElements(d)
   try
      tell application "System Events" to return XML elements of d
   on error
      return {}
   end try
end getElements

on getAttributes(d)
   try
      tell application "System Events" to return XML attributes of d
   on error
      return {}
   end try
end getAttributes

---
Nach ein paar Versuchen, an die Elemente zu kommen, gab ich auf, denn es wird empfohlen, statt der
unzuverlässigen "System Events" die neue Scripting Addition "XMLLib" zu verwenden. Du findest sie hier:
http://satimage-software.com samt Dokumentation. Ich habe sie installiert und kurz in das Wörterbuch
geschaut. Aber jetzt sollte ich den Koffer fertig packen... Bye! :-)

Gruss, Hans


als Antwort auf: [#419791]

XML zu TXT

Anonym
Beiträge gesamt: 22827

1. Jul 2005, 19:58
Beitrag # 5 von 6
Beitrag ID: #419795
Bewertung:
(1511 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
noch eine wirklich nette Möglichkeit gelegentlich XML zu konvertieren
ist der XSLT Tester von Latenight:
http://www.latenightsw.com/.../XSLTTools/index.htm
Ich benutze den kleinen XSLT Tester gerne, weil er mit richtigen XSL Stylesheets arbeitet und somit sehr flexibel ist.
Der XSLT Tester hat drei Bereiche in einem Fenster
1. XML Input
2. XSL Stylesheet
3. Output
Für Deine Aufgabe sollten die Bereiche dann so gefüllt werden:

1. XML Input
[code:1]<?xml version="1.0"?>
<doc>
<object>
 <objectID>0001</objectID>
 <Bildname>BildWasauchimmer.jpg</Bildname>
 <Farbraum>CMYK</Farbraum>
</object>
<object>
 <objectID>0001</objectID>
 <Bildname>BildWasauchimmer.jpg</Bildname>
 <Farbraum>CMYK</Farbraum>
</object>
</doc>
[/code:1]
2. XSL Stylesheet
[code:1]<?xml version="1.0"?>
<xsl&#58;stylesheet xmlns&#58;xsl="http&#58;//www.w3.org/1999/XSL/Transform" version="1.0">
<xsl&#58;template match="doc">
 <xsl&#58;for-each select="//object">
  <xsl&#58;value-of select="//objectID"/>
  <xsl&#58;text>&#09;</xsl&#58;text>
  <xsl&#58;value-of select="//Bildname"/>
  <xsl&#58;text>&#09;</xsl&#58;text>
  <xsl&#58;value-of select="//Farbraum"/>
  <xsl&#58;text>&#13;</xsl&#58;text>
 </xsl&#58;for-each>
</xsl&#58;template>
</xsl&#58;stylesheet>
[/code:1]
3. Output
[code:1]<?xml version="1.0" encoding="UTF-8"?>
0001 BildWasauchimmer.jpg CMYK
0001 BildWasauchimmer.jpg CMYK
[/code:1]


als Antwort auf: [#419791]

XML zu TXT

swish
Beiträge gesamt: 75

4. Jul 2005, 07:39
Beitrag # 6 von 6
Beitrag ID: #419796
Bewertung:
(1511 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hallo peter,

das ist eine sehr gute lösung ! ich werde das mal ausprobieren.

Vielen Dank !

Grüße,

Stephan


als Antwort auf: [#419791]
X

Aktuell

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
02.02.2023

Prozesse optimieren und effizient gestalten

Zürich
Donnerstag, 02. Feb. 2023, 08.00 - 10.00 Uhr

Digitalisierung, Webauftritt

Digitalisierung mitgestalten - Worauf kommt es an? Wie wichtig ist die Webseite? Webseite mit Word Press? Interne Prozesse optimieren

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: Birol Isik, E-Mailinfo AT bkcc DOT ch

https://digitalisierung-heute.ch/digitalisierung-informationstag-schweiz/

Veranstaltungen
01.03.2023 - 09.03.2023

Online
Mittwoch, 01. März 2023, 00.00 Uhr - Donnerstag, 09. März 2023, 00.00 Uhr

Online Webinar

Wie gehen wir mit diesen Veränderungen um? Was ist notwendig, damit wir die Digitalisierung im Unternehmen klappt? Veränderungsprozesse verstehen und entsprechend handeln Mitarbeiter als Botschafter Webseite mit WordPress erstellen SEA /SEO (Ads aufschalten)

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: B. Isik, E-Mailinfo AT snfa DOT ch

https://www.fernstudiumfitness.ch/digitalisierung-schweiz/