Seminar: XML und Datenbanken

Werbung
Seminar: XML und Datenbanken
XML-Verarbeitungsmodelle
und
Language Bindings
Christian Müller
24.01.2003
Übersicht
1
Einleitung
2
Simple API for XML (SAX)
3
Document Object Model (DOM)
4
JDOM
5
Java API for XML Processing (JAXP)
6
XL
7
Zusammenfassung
Seminar XML und Datenbanken
2
Einleitung
Möglichkeiten zur Verarbeitung von XML
ereignisbasiert
Baumstruktur
<Seminar>
<Vortrag>XML</Vortrag>
<Datum>24.1.</Datum>
</Seminar>
Seminar XML und Datenbanken
3
SAX
Java-API
kein Parser
ereignisbasiert
beim Parsen werden Ereignisse ausgelöst (Callbacks)
Anwendungscode in diese Methoden einfügen
Seminar XML und Datenbanken
4
Ereignisse
...
startDocument
<vortragender>
startElement
<name>
startElement
Müller
characters
</name>
endElement
<vorname>
startElement
Christian
characters
</vorname>
endElement
</vortragender>
endElement
...
endDocument
Seminar XML und Datenbanken
5
XMLReader
XMLReader reader = XMLReaderFactory.
createXMLReader(“org.apache.xerces.parsers.SAXParser“);
reader.setContentHandler(new MyContentHandler());
reader.setErrorHandler(new MyErrorHandler());
reader.setFeature(“http://xml.org/features/validation“,
true);
reader.parse(new InputSource(“beispiel.xml“));
Seminar XML und Datenbanken
6
ContentHandler
startDocument() :
zu Beginn des Dokuments aufgerufen
endDocument() :
zu Ende des Dokuments aufgerufen
setDocumentLocator(Locator locator) :
zu Beginn des Dokuments aufgerufen
Locator stellt Informationen bereit
Seminar XML und Datenbanken
7
ContentHandler (2)
startElement(String namespaceURI, String localName,
String qName, Attributes atts) :
namespaceURI: Namensraumaddresse des Elements
localName: Name des Elements ohne Namensraumadresse
qName: qualifizierter Name
atts: Attribute des Elements
Seminar XML und Datenbanken
8
ContentHandler (3)
endElement(String namespaceURI, String localName,
String qName)
characters(char[] ch, int start, int length) :
•
beim Auftreten von Text aufgerufen
weitere Methoden
Seminar XML und Datenbanken
9
Bewertung von SAX
sequentielle Verarbeitung
kein Rück- bzw. Vorgriff auf andere Knoten
geringer Ressourcenverbrauch (Speicher)
keine Ausgabe vorgesehen
Seminar XML und Datenbanken
10
DOM
sprachunabhängig
kein Parser
Baummodell stellt Struktur dar
verschiedene Sprachbindungen
Java-Sprachbindungen
Seminar XML und Datenbanken
11
Knotentypen
...
Seminar XML und Datenbanken
12
DomParser
org.apache.xerces.parsers.DomParser parser =
new DomParser();
parser.parse(“beispiel.xml“);
Document doc = parser.getDocument();
Seminar XML und Datenbanken
13
Node
Methoden, die alle Knotentypen haben:
getNodeType() : short
getNodeName() : String
getNodeValue() : String
getParentNode() : Node
getFirstChild() : Node
getLastChild() : Node
getChildNodes() : NodeList
getAttributes() : NamedNodeMap
Seminar XML und Datenbanken
14
Bewertung von DOM
sprachunabhängig
nicht herstellerunabhängig
hoher Speicherbedarf
Vor- und Rückgriff auf andere Knoten
keine Ausgabe vorgesehen
Seminar XML und Datenbanken
15
JDOM
Java-API
Baummodell
Beta-Version
einlesen von XML mittels SAXBuilder oder DOMBuilder
Seminar XML und Datenbanken
16
Ausgabe
org.jdom.output
DOMOutputter
SAXOutputter
XMLOutputter
Seminar XML und Datenbanken
17
XMLOutputter
Ausgabe in Datei:
XMLOutputter out = new XMLOutputter();
FileOutputStream stream =
new FileOutputStream(“beispiel.xml“);
out.output(JDOMDocument,stream);
Seminar XML und Datenbanken
18
Unterschiede zu DOM
keine Erweiterung von DOM
JDOM besteht aus konkreten Klassen
Ausgabemechanismus
JDOM noch im Standardisierungsprozess
Seminar XML und Datenbanken
19
JAXP
Java-API von SUN
Nutzung von SAX und DOM herstellerunabhängig
Wechsel des Parsers ohne Neukompilierung
•
Wechsel der JAXP-Distribution
•
JAXP-Systemeigenschaften
Seminar XML und Datenbanken
20
Verwendung von SAX
SAXParserFactory factory =
SAXParserFactory.newInstance();
factory.setValidating(true);
SAXParser parser = factory.newSAXParser();
parser.parse(“beispiel.xml“,new MyHandler());
DOM analog mittels DocumentBuilder
Seminar XML und Datenbanken
21
XL
Forschungsprojekt der TU München
XML-Programmiersprache
Entwicklung und Komposition von Web Services
XML einziger Datentyp
Konzentration des Programmierers auf Applikationslogik
plattformunabhängig
Seminar XML und Datenbanken
22
Beispiel
service http://www.auktion.com
let bieter;
operation registriereBieter
precondition empty($bieter[@uri=$input/uri]);
postcondition exists($bieter[@uri=$input/uri]);
body
insert $input into $bieter;
let $output = <msg>Danke.</msg>
endbody
endoperation
endservice
Seminar XML und Datenbanken
23
Zusammenfassung
ereignisbasierte Verarbeitung
baumstrukturierte Modelle
•
sprachunabhängig
•
an Java gebunden
herstellerunabhängige Nutzung von SAX und DOM
XML-Programmiersprache
Seminar XML und Datenbanken
24
Ende
Seminar XML und Datenbanken
25
Herunterladen