inews: XML in der Praxis Konvertierung von Objekten nach XML und zurück Dr. St. Seefeld / INGTES AG
Objekte und XML Bei der Arbeit mit objektorientierten Programmiersprachen und XML kommt schnell der Wunsch auf, Objekte in XML umzuwandeln und umgekehrt. 2
Objekte und XML Objekt1 Objekt2 Objekt3 <axmldokument>... </axmldokument > Netz <axmldokument>... </axmldokument > Objekt1 Objekt2 Objekt3 3
Inhalt Wofür XML? Newsmanagement-System inews Anforderungen an inews Wie XML? DOM Wie XML? Implementierung 4
inews - Übersicht inews ist ein Newsmanagement-System, dient dem Empfang, der Verarbeitung und Weiterleitung von Agenturmeldungen, lässt sich an Kundenbedürfnisse anpassen. Zielpublikum: Kunden mit Agenturfeed 5
inews Systemarchitektur Satellitenantenne Modem SAT-Receiver inews-receiver News-Ticker inews-server DB inews-web-publisher Printer Intranet/Internet inews-client2 inews-client1 6
inews - Benutzeroberfläche inews 7
inews - Anforderungen Flexibles internes Format Multimedia Verteilt Plattform übergreifend Schlank Ressourcensparend TCP/IP basierend Zukunftsgerichtet 8
inews - Architektur Mehrschichtenarchitektur Client Server Receiver Agenten basiert Datenbank Alle inews-komponenten sind Befehlssender und -empfänger. 9
inews - Kommunikation Verbindung über TCP/IP Entsprechend Anforderungen Bewährte Technologie Datenaustausch als XML Flexibel Einfach zu erweitern Zukunftsgerichtet 10
Objekte zu XML Repräsentation von Daten Im Programm als Objekte Bei der Übertragung als XML Frage Wie kann ich Objekte in XML umwandeln? Wie kann ich Objekte aus XML erstellen? 11
Objekte zu XML Obj2 Obj1 Obj3 <Obj1...> <Obj2...> <Obj4...\> </Obj2> <Obj3... \> </Obj1> Obj4 DOM 12
Objekte zu XML DOM Document Object Model API für XML Dokumente Zugriff und Manipulationen auf XML- Dokumente W3C Spezifikation Unabhängig von Programmiersprache Von diversen Anbietern erhältlich 13
DOM XML Dokumente als Baumstruktur <TABLE> <TBODY> <TR> <TD>Forelle</TD> <TD>Fisch</TD> </TR> <TR> <TD>Storch</TD> <TD>Vogel</TD> </TR> </TBODY> </TABLE> <TABLE> <TBODY> <TR> <TR> <TD> <TD> <TD> <TD> Forelle Fisch Storch Vogel 14
DOM Objektstruktur (vereinfacht) Child Nodes 0..* TNode Attributes 0..* Attr TCharacterData Element XMLDocument Comment Text CDATASection 15
Beispiel: Filterkriterien inews kann Meldungen nach Benutzerkriterien Suchen und Filtern. Filterkriterien können mit UND, ODER und NICHT verknüpft werden. 16
Objekte zu XML Beispiel Filter nach DOM SelectionRelation LTerm Autor RelationType = RTerm Meier Dokument Element Name: Filter Gratis Attribut Tag: LTerm Wert: Autor Attribut Tag:... Wert:... Attribut Tag:... Wert:... <axml-dokument> 17
Objekte zu DOM Objekte werden DOM-Elemente Variablenname wird Name des Elements Unabhängig von der Klasse Klassentyp wird Attribut Objektvariablen werden DOM-Attribute Variablenname wird Name des Attributs Variablenwert wird Wert des Attributs 18
Objekte zu DOM Klasse TSelRelation = class mlterm : string; mrelationtype : TRelOp; mrterm : string; end; var Filter : TSelRelation XML Stream <Filter _class = "TSelRelation" LTerm = "Autor" RelationType = "=" Rterm = "Meier" \> 19
Objekte zu DOM Problem: Wo findet die Zuordnung Variablen zu Tags statt? Member-Variablen sind im Code definiert TSelRelation = class mlterm : string; mrelationtype : TRelOp; mrterm : string; end; var Filter : TSelRelation Tags sind Strings, im XML Stream <Filter _class = "TSelRelation LTerm = "Autor" RelationType = "=" Rterm = "Meier \> 20
Objekte zu DOM Zuordnung Variablennamen - Tag Ausserhalb der Klasse Automatisch vom System Innerhalb der Klasse 21
Objekte zu DOM Ausserhalb der Klasse Eine Hilfsklasse kennt alle Variablen der Klasse Klasse Nachteile Hilfsklasse Zuordnung() Pro Klasse eine Hilfsklasse Anpassungen an zwei Orten Kein Information Hiding DOM 22
Objekte zu DOM Zuordnung durch das System Zuordnung durch Compiler bzw. das Runtime System Klasse DOM Nachteile Geht oft nicht mir privaten Variablen Wenig Kontrolle 23
Objekte zu DOM Innerhalb der Klasse Klasse weiss, wie sie sich in DOM umwandeln muss Nachteil Klasse Ballast für Klasse Zuordnung() Vorteile überwiegen DOM 24
Objekte zu DOM Ballast in Klasse klein halten durch Vermittler (Mediator) Converter Convert(data) Data Zuordnung() Exchanger ExchangeX() ExchangeY() Selection Zuordnung()... Zuordnung() DOM 25
Objekt zu DOM-Elemente Converter Convert Data DOM ex: Exchanger Create Create Element Exchange(ex) ExchangeX ExchangeY GetElement Delete DOMtoXML Create Attr Create Attr 26
Komplexe Strukturen SelectionOperation Operation AND SelectionRelation LTerm Autor RelationType = RTerm Meier SelectionRelation LTerm Agentur RelationType = RTerm SDA <Filter _Class= "SelOperation" Operation="AND"> <Item1 Attribute="Autor" Value=... \> <Item2 Attribute="Agentur" Value=... \> </Filter > 27
Komplexe Strukturen XML erlaubt beliebige Verschachtelung z. B.: ( (Quelle = sda UND Sprache = deu ) ODER (Quelle = ap UND Sprache = eng ) ODER (Quelle = Reuters ) ) UND NICHT (Kategorie = vm ) Selection SelectionRelation SelectionOperation 28
Objekte zu XML Vorteile des gewählten Ansatzes Alle Informationen bleiben in der Klasse Eine einzige Prozedur für Objekt zu DOM und DOM zu Objekt Konvertieren verknüpfter Objekte Konvertieren abgeleiteter Objekte 29
Zusammenfassung inews Beispiel einer verteilten Applikation Kommunikation mittels XML-Protokoll Umwandlung von Objekt zu XML über DOM Jede Klasse ist selbst für ihre Umwandlung zuständig Abhängigkeiten wurden reduziert 30
Fazit XML hat sich bewährt Ausgereift, flexibel, leicht zu debuggen Infrastruktur ist vorhanden Parser, DOM Performance ist nicht kritisch Synergien Gleiche Mechanismen für Kommunikation und Konfigurationsfiles 31
Vielen Dank für Ihre Aufmerksamkeit Fragen? 32
Objekte zu DOM Beispielcode einer Exchange-Prozedur procedure TSelRelation.Exchange( anexch: Exchanger ); begin anexch.exchattr('attribute',flterm,''); anexch.exchattr('value',frterm,''); anexch.exchattr('relation',frelop,'='); end; 33
inews - Kommunikation Möglichkeiten für die Kommunikation zwischen Komponenten DCOM /.NET CORBA RMI (Java) SOAP Eigenes Format 34