Warum XML?

Werbung
Java und XML
Stephan Baldes
14.04.2008
1
Warum XML?
In welchem Format wurden
die Daten gespeichert?
CSV
(Comma-Separated Values)
Bernd;Thomas;3;5;1987;Freiburg;Karlsruhe
Peter;Maier;7;9;1980;Karlsruhe;Freiburg
Im CSV-Format ist die Bedeutung
der Daten nicht bekannt.
2
Java und XML
Was ist XML?
3
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,...
4
XML: EXtensible Markup Language
book
↔
<Qty unit="g"></Qty>
5
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.
6
Arbeitsauftrag
CSV-Datei in wohlgeformtes XML-Dokument
umwandeln
Kopieren 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
7
Java und XML
XML-Verarbeitung
in Java
8
XML-Verarbeitung in Java
• JDK stellt ab Version 1.4 alle benötigten Technologien bereit.
• Zwei Ansätze:
• SAX: Simple API for XML
public void startElement(String name, …) {
System.out.println("Start element: " +
name);
}
…
• DOM:Document Object Model
• Andere Ansätze: StAX, JDOM, XSLT, XPATH, …
9
SAX
•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));}
10
SAX Beispiel
11
SAX Beispiel
12
DOM
• 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();
13
DOM Beispiel
14
Herunterladen