XML-‐basierte Kommunikation im IHE - Institute of Health ...
XML-‐basierte Kommunikation im IHE - Institute of Health ... XML-‐basierte Kommunikation im IHE - Institute of Health ...
3. Methoden und Vorgehensplanung Die XML Datei wird wie ein Datenstrom gelesen und bei bestimmten Inhalte wird ereignisge-‐ steuert eine vorher definierte Call-‐Back Methode aufgerufen [31]. Stößt der Parser beim Einle-‐ sen auf ein XML-‐Element, wird die vom Benutzer definierte Methode „startElement()“ aufgeru-‐ fen. Erkennt der Parser Text innerhalb des Elements, wird die Methode „characters()“ aufgeru-‐ fen, welche den Text einliest. Wird das Element-‐Tag dann geschlossen folgt eine „endElement()“ Methode. So können die Elemente eines XML-‐Dokuments sequentiell eingelesen werden. Der Vorteil einer Push-‐API ist somit die speicherarme Abarbeitung beim Einlesen, womit auch die Verarbeitung von sehr großen Dokumenten ermöglicht wird. Der iterative Vorgang ist aber mit dem Nachteil verbunden, dass sich der Benutzer um die Weiterverarbeitung der gewonnen Da-‐ ten kümmern muss und so ein Zugriff auf ein bestimmtes Element nicht ohne benutzerdefinierte Zwischenspeicherung möglich ist. Außerdem ist es mit einer Push-‐API nur möglich, XML-‐ Dokumente zu lesen, jedoch nicht zu schreiben. „Simple API for XML Parsing“, kurz SAX, ist der bekannteste JAVA Vertreter der Push-‐APIs [36]. Die API bietet Interfaces für JAVA an, um ein XML sequentiell nach dem Push-‐Ansatz zu parsen. SAX ist seit 2002 in der Version 2 verfügbar und gilt als De-‐facto-‐Standard, da es zwar von kei-‐ nem offiziellen Gremium verabschiedet wurde, jedoch schnell Beliebtheit in der XML-‐ Verarbeitung errungen hatte. Pull-‐API Eine Pull-‐API verarbeitet ein XML–Dokument ähnlich sequentiell wie eine Push-‐API. Der Unter-‐ schied ist, dass bei einer Push-‐API der Parser das Anwendungsprogramm über die Call-‐Back-‐ Methoden aufruft, während bei einer Pull-‐API das Anwendungsprogramm iterativ den Parser aufruft. Somit wird bei einer Pull-‐API aktiv der nächste Teil des Dokuments angefordert. Dieses Prinzip entspricht dem Iterator Design Pattern [37]. Der Iterator muss somit vom Anwendungs-‐ programm von Element zu Element weiter bewegt werden. Es gibt zwei Verarbeitungstypen einer Pull-‐API: 1. Iterator-‐Verarbeitung 2. Curser-‐Verarbeitung Bei der Iterator-‐Verarbeitung wird bei jedem neuen Element im XML ein neues Objekt erzeugt. Dieses Objekt kann in einer Datenstruktur gespeichert werden, um später darauf zurückgreifen zu können. Die Iterator-‐Verarbeitung ist somit flexibler als die Curser-‐Verarbeitung. Bei der Curser-‐Verarbeitung wird das XML immer im selben Objekt weitergeparst. Somit steht zu einem bestimmten Zeitpunkt immer nur das Objekt mit der aktuellen Position zur Verfügung. 24
3. Methoden und Vorgehensplanung Die Curser-‐Verarbeitung ist zwar unflexibler, aber auch speichereffizienter und besitzt eine hö-‐ here Verarbeitungsgeschwindigkeit. Der Vorteil der Pull-‐API ist die Kombination aus DOM und SAX: Es können auch große Dokumen-‐ te geparst werden, die Kontrolle geht aber vom Anwendungsprogramm aus. Außerdem können mit Pull-‐APIs XML Dokumente sowohl gelesen als auch erzeugt werden. „The Streaming API for XML“ [38], kurz StAX, ist der Hauptvertreter der Pull-‐APIs. Mapping-‐API Mapping-‐APIs, bzw. auch XML-‐Binding genannt, versuchen anders als bei den vorher vorgestell-‐ ten Parsertypen das Dokument direkt auf eine Klassenstruktur abzubilden. Das bedeutet, dass ein XML-‐Dokument ohne direkte Schnittstelle direkt in eine Klasseninstanz übergeführt wird. Vorteil der Mapping-‐APIs ist die leichte Verwendung in einer Applikation, da man sich den um-‐ fangreichen Parsvorgang spart. Das führt auch zu einem geringen Wartungsaufwand und einer geringen Fehleranfälligkeit. Die Nachteile ergeben sich aus den meist sehr umfangreichen Vor-‐ arbeiten, bis man den korrekten Mapping-‐Algorithmus generiert hat. Die bekannteste XML-‐ Mapping-‐API für JAVA ist JAXB („JAVA API for XML Bindung“) [39]. 3.2.1.3 Auswahl des geeignetsten Parser-‐Frameworks anhand eines qualitativen Vergleichs In diesem Abschnitt werden o.g. Parser-‐Frameworks untereinander verglichen. Dafür werden verschiedene Merkmale gegenüberstellt und bewertet. Die Merkmale umfassen dabei: • Performance: wie effizient kann der Parser ein XML-‐Dokument einlesen • Speicherintensität: wie viel Speicher benötigt der Parser für das Einlesen eines XML-‐ Dokuments • Erstellen von Dokumenten: kann mit dem Parser auch ein XML-‐Dokument erzeugt wer-‐ den • Zugriff auf bestimmten Knoten: wie flexibel/schnell kann auf einem bestimmten Knoten in der Struktur zugegriffen werden • Programmieraufwand: welcher Aufwand muss für die Implementierung bzw. Anpassung der Parser-‐Schnittstellen aufgebracht werden • Aufwand Objektabbildung: wie viel Code muss programmiert werden, um die geparsten Daten in ein Objekt zu bekommen • Einarbeitungszeit: wie lange wird für das Erlernen der Parser-‐Syntax benötigt • Dokumentation: wie gut ist verfügbare Dokumentation Alle Merkmale werden für jedes Parser-‐Framework folgendermaßen bewertet: 25
- Seite 1 und 2: XML-‐basierte Kommunikation im
- Seite 3 und 4: Zusammenfassung Mit zunehmender Spe
- Seite 5 und 6: Abstract Increasing specialisation
- Seite 7 und 8: Inhaltsverzeichnis 1. Einleitung...
- Seite 9 und 10: 1. Einleitung 1.1. Gegenstand und M
- Seite 11 und 12: 1. Einleitung erfordert die inhaltl
- Seite 13 und 14: 2. Grundlagen und Stand der Forschu
- Seite 15 und 16: 2. Grundlagen und Stand der Forschu
- Seite 17 und 18: 2. Grundlagen und Stand der Forschu
- Seite 19 und 20: 2. Grundlagen und Stand der Forschu
- Seite 21 und 22: 2. Grundlagen und Stand der Forschu
- Seite 23 und 24: 2. Grundlagen und Stand der Forschu
- Seite 25 und 26: 2. Grundlagen und Stand der Forschu
- Seite 27 und 28: 2. Grundlagen und Stand der Forschu
- Seite 29 und 30: 3. Methoden und Vorgehensplanung Da
- Seite 31: 3. Methoden und Vorgehensplanung 3.
- Seite 35 und 36: 3. Methoden und Vorgehensplanung 3.
- Seite 37 und 38: 3. Methoden und Vorgehensplanung 3.
- Seite 39 und 40: 3. Methoden und Vorgehensplanung 2.
- Seite 41 und 42: 3. Methoden und Vorgehensplanung Au
- Seite 43 und 44: 3. Methoden und Vorgehensplanung 3.
- Seite 45 und 46: 3. Methoden und Vorgehensplanung de
- Seite 47 und 48: 3. Methoden und Vorgehensplanung 3.
- Seite 49 und 50: 3. Methoden und Vorgehensplanung Au
- Seite 51 und 52: 3. Methoden und Vorgehensplanung Ab
- Seite 53 und 54: 4. Ergebnisse Abbildung 14: Anwendu
- Seite 55 und 56: 4. Ergebnisse 4.1.2 Schnittstellenk
- Seite 57 und 58: 4. Ergebnisse Abbildung 16: Klassen
- Seite 59 und 60: 4. Ergebnisse • Values: Werte, we
- Seite 61 und 62: 4. Ergebnisse Abbildung 17: Grafisc
- Seite 63 und 64: 4. Ergebnisse Nach Ausführen des P
- Seite 65 und 66: 4. Ergebnisse ... CLUSTER Interpre
- Seite 67 und 68: 4. Ergebnisse Im Folgenden wird die
- Seite 69 und 70: 4. Ergebnisse werden. Dazu generier
- Seite 71 und 72: 4. Ergebnisse Der Benutzer kann dan
- Seite 73 und 74: 5. Diskussion Echtzeit 16. Dies bed
- Seite 75 und 76: 5. Diskussion aus dem ATR direkt im
- Seite 77 und 78: 5. Diskussion die Schnittstellen, w
- Seite 79 und 80: 7. Danksagung Ich möchte mich hier
- Seite 81 und 82: 7Literaturverzeichnis 16. epSOS - t
3. Methoden und Vorgehensplanung<br />
Die <strong>XML</strong> Datei wird wie ein Datenstrom gelesen und bei best<strong>im</strong>mten Inhalte wird ereignisge-‐<br />
steuert eine vorher definierte Call-‐Back Methode aufgerufen [31]. Stößt der Parser be<strong>im</strong> Einle-‐<br />
sen auf ein <strong>XML</strong>-‐Element, wird die vom Benutzer definierte Methode „startElement()“ aufgeru-‐<br />
fen. Erkennt der Parser Text innerhalb des Elements, wird die Methode „characters()“ aufgeru-‐<br />
fen, welche den Text einliest. Wird das Element-‐Tag dann geschlossen folgt eine „endElement()“<br />
Methode. So können die Elemente eines <strong>XML</strong>-‐Dokuments sequentiell eingelesen werden. Der<br />
Vorteil einer Push-‐API ist somit die speicherarme Abarbeitung be<strong>im</strong> Einlesen, womit auch die<br />
Verarbeitung von sehr großen Dokumenten ermöglicht wird. Der iterative Vorgang ist aber mit<br />
dem Nachteil verbunden, dass sich der Benutzer um die Weiterverarbeitung der gewonnen Da-‐<br />
ten kümmern muss und so ein Zugriff auf ein best<strong>im</strong>mtes Element nicht ohne benutzerdefinierte<br />
Zwischenspeicherung möglich ist. Außerdem ist es mit einer Push-‐API nur möglich, <strong>XML</strong>-‐<br />
Dokumente zu lesen, jedoch nicht zu schreiben.<br />
„S<strong>im</strong>ple API for <strong>XML</strong> Parsing“, kurz SAX, ist der bekannteste JAVA Vertreter der Push-‐APIs [36].<br />
Die API bietet Interfaces für JAVA an, um ein <strong>XML</strong> sequentiell nach dem Push-‐Ansatz zu parsen.<br />
SAX ist seit 2002 in der Version 2 verfügbar und gilt als De-‐facto-‐Standard, da es zwar von kei-‐<br />
nem <strong>of</strong>fiziellen Gremium verabschiedet wurde, jedoch schnell Beliebtheit in der <strong>XML</strong>-‐<br />
Verarbeitung errungen hatte.<br />
Pull-‐API<br />
Eine Pull-‐API verarbeitet ein <strong>XML</strong>–Dokument ähnlich sequentiell wie eine Push-‐API. Der Unter-‐<br />
schied ist, dass bei einer Push-‐API der Parser das Anwendungsprogramm über die Call-‐Back-‐<br />
Methoden aufruft, während bei einer Pull-‐API das Anwendungsprogramm iterativ den Parser<br />
aufruft. Somit wird bei einer Pull-‐API aktiv der nächste Teil des Dokuments angefordert. Dieses<br />
Prinzip entspricht dem Iterator Design Pattern [37]. Der Iterator muss somit vom Anwendungs-‐<br />
programm von Element zu Element weiter bewegt werden. Es gibt zwei Verarbeitungstypen<br />
einer Pull-‐API:<br />
1. Iterator-‐Verarbeitung<br />
2. Curser-‐Verarbeitung<br />
Bei der Iterator-‐Verarbeitung wird bei jedem neuen Element <strong>im</strong> <strong>XML</strong> ein neues Objekt erzeugt.<br />
Dieses Objekt kann in einer Datenstruktur gespeichert werden, um später darauf zurückgreifen<br />
zu können. Die Iterator-‐Verarbeitung ist somit flexibler als die Curser-‐Verarbeitung.<br />
Bei der Curser-‐Verarbeitung wird das <strong>XML</strong> <strong>im</strong>mer <strong>im</strong> selben Objekt weitergeparst. Somit steht<br />
zu einem best<strong>im</strong>mten Zeitpunkt <strong>im</strong>mer nur das Objekt mit der aktuellen Position zur Verfügung.<br />
24