Upload
jan-armbruster
View
221
Download
0
Embed Size (px)
Citation preview
1
Java und XMLStephan Baldes
14.04.2008
2
Warum XML?
In welchem Format wurden die Daten gespeichert?
Bernd;Thomas;3;5;1987;Freiburg;KarlsruhePeter;Maier;7;9;1980;Karlsruhe;Freiburg
CSV(Comma-Separated Values)
Im CSV-Format ist die Bedeutung der Daten nicht bekannt.
3
Java und XML
Was ist XML?
4
XML: EXtensible Markup Language
• 1998: XML-Spezifikation World Wide Web Consortium (W3C)
• Darstellung hierarchisch strukturierter Daten in Form von Text.
• Austausch von Daten zwischen verschiedenen Systemen: Menschen- und maschinenlesbar.
• Idee: Trennung von Inhalt und Darstellung.
• Techniken: DTD, Schema, XSLT, XPATH,...
5
book
<Qty unit="g"></Qty>↔
XML: EXtensible Markup Language
6
XML: EXtensible Markup Language<?xml version="1.0" encoding="ISO-8859-1" ?> <wikipedia> <titel>Wikipedia Städteverzeichnis</titel> <!-- Jetzt folgen alle Städte --> <eintrag> <stichwort>Genf</stichwort> <eintragstext>Genf ist der Sitz von ...</eintragstext> </eintrag> <eintrag> <stichwort>Köln</stichwort> <eintragstext>Köln ist eine Stadt, die ...</eintragstext> </eintrag> </wikipedia>
• Ausdrücke sind wohlgeformt.
• Meta-Tags, Kommentare
• Das Dokument enthält nur ein Wurzelelement.
7
Arbeitsauftrag CSV-Datei in wohlgeformtes XML-Dokument
umwandelnKopieren Sie die Datei adressliste.csv aus dem Vorlagenlaufwerk und
wandeln Sie sie in ein wohlgeformtes XML-Dokument um. Speichern Sie die Datei unter dem Namen adressliste.xml und öffnen Sie
sie im Firefox.
Zeit: 5 Minuten
8
Java und XML
XML-Verarbeitung in Java
9
• JDK stellt ab Version 1.4 alle benötigten Technologien bereit.
• Zwei Ansätze:
• SAX: Simple API for XML
• DOM:Document Object Model
• Andere Ansätze: StAX, JDOM, XSLT, XPATH, …
public void startElement(String name, …) { System.out.println("Start element: " + name); } …
XML-Verarbeitung in Java
10
•XMLReader xr = XMLReaderFactory.createXMLReader(); xr.parse(new InputSource(new FileReader("Personen.xml")));
• public void startElement(…,String name, Attributes atts) { System.out.println("Start element: " + name); }
• public void endElement(…,String name, Attributes atts) { System.out.println("End element: " + name); }
• public void characters(char ch[], …) { System.out.println("Content: " + String.valueOf(ch));}
SAX
11
SAX Beispiel
12
SAX Beispiel
13
• DocumentBuilderFactory factory = … DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(…"Personen.xml"...);
• Node root = document.getFirstChild();
• NodeList personListe = root.getChildNodes();
• Node aktuellePerson = personListe.item(i);
• String tagName = aktuellesTag.getNodeName();
• String tagInhalt = aktuellesTag.getTextContent();
DOM
14
DOM Beispiel