XML-Parser - PowerPoint PPT Presentation

About This Presentation
Title:

XML-Parser

Description:

Title: XML-Parser Author: Manuel R llinghoff Last modified by: Manuel R llinghoff Created Date: 11/19/2000 10:19:44 PM Document presentation format – PowerPoint PPT presentation

Number of Views:172
Avg rating:3.0/5.0
Slides: 38
Provided by: Manu52
Category:
Tags: xml | parser | xslt

less

Transcript and Presenter's Notes

Title: XML-Parser


1
XML-Parser
  • Manuel Röllinghoff

2
Übersicht
  • Einleitung
  • Parsereigenschaften
  • SAX
  • DOM
  • Beschreibung der wichtigsten Java-Parser
  • Parsergeneratoren

3
Einleitung
  • Große Anzahl von XML-Parsern für fast alle
    Programmier- und Skriptsprachen erhältlich.
  • Unterstützung von Standards unterschiedlich.
  • Java und XML

4
Einleitung
  • Wo werden XML-Parser eingesetzt?
  • Ein Beispiel

5
Parserarten
  • Zwei Parserarten
  • Nicht-validierende Parser überprüfen nur, ob das
    Dokument wohlgeformt ist
  • Validierende Parser überprüfen zusätzlich, ob
    das Dokument sich an die vorgegebene DTD hält

6
Wohlgeformtheit
  • Alle Attributwerte müssen in Anführungsstrichen
    stehen
  • Jedes Tag muss ein Ende-Tag besitzen ( ltbrgtlt/brgt
    ) oder mit einem "/" gleich beendet werden (
    ltbr/gt )
  • Elemente müssen sauber ineinander eingebettet
    sein ( nicht ltsprachegt ltdeutschgt lt/sprachegt
    lt/deutschgt )
  • Der Name eines Attributs kommt innerhalb eines
    Elements nicht mehr als einmal vor
  • Ein Attributwert darf keinen Verweis auf ein
    externes Entity enthalten
  • Ein Attributwert darf kein "lt" enthalten

7
SAX
  • Simple API for XML
  • entwickelt von der XML-DEV Mailinglist
  • 1998 Version 1.0, inzwischen Version 2.0
  • serieller Mechanismus zur Verarbeitung von
    XML-Dokumenten
  • ereignisgesteuertes Protokoll(Handler)

8
SAX
  • Parser über ParserFactory instanzieren
  • Handler implementieren und beim Parser
    registrieren
  • Parser.parse() aufrufen

9
SAX
DocumentHandler
  • startDocument()
  • endDocument()
  • startElement()
  • endElement()
  • characters()
  • ignorableWhitespace()
  • processingInstruction()
  • setDocumentLocator()

10
SAX
11
SAX
ErrorHandler
  • warning()
  • error()
  • fatalError()

12
SAX
13
SAX
Entity Resolver
  • resolveEntity()
  • unparsedEntityDecl()
  • notationDecl()

DTDHandler
14
SAX 1.0 gt SAX 2.0
  • Unterstützung von XML-Namespaces
  • einheitliche Schnittstelle zum Lesen und
    Schreiben von Properties und Features
  • Interface XMLFilter um Filter zwischen Anwendung
    und SAX-Treiber einzusetzen
  • neue Namen für Interfaces XMLReader für Parser,
    ContentHandler für DocumentHandler u.v.m.

15
Whitespace I
  • Leerzeichen, Tabs, Zeilenschaltung u.ä. zwischen
    Tags um Quelltext lesbarer zu machen
  • nicht signifikant, kann nur mit Hilfe der DTD
    erkannt werden
  • wird in Methode ignorableWhitespace() des
    DocumentHandlers weitergegeben
  • bei nichtvalidierenden Parsern unterschiedliche
    Behandlung

16
Whitespace II
  • signifikant, z.B. Zeilenenden bei Quelltext,
    mehrere Leerzeichen zwischen Wörtern
  • keine Möglichkeit für den Parser, die Signifikanz
    zu erkennen
  • Lösung entweder das Attribut xmlspace"preserve"
    setzen oder die Daten in einem CDATA-Abschnitt
    kapseln

17
DOM
  • Document Object Model
  • Standard vom W3C
  • 1998 DOM Level 1, DOM Level 2 Proposed
    Recommendation
  • Das DOM definiert mehrere Interfaces mit denen
    Daten in einer Baumstruktur beschrieben werden
    können.

18
DOM
19
DOM
  • Alle Knoten von Node abgeleitet
  • Funktionalität zum Traversieren des Baumes in
    Node
  • spezifische Eigenschaften in abgeleiteten Klassen
  • weitere Interfaces für Notation, Entity,
    EntityReference, ProcessingInstruction

20
DOM
  • Beispiel

lt?xml version"1.0"?gt lt!--DOM Demo--gt ltxdocgt
ltBegruessunggtHallo ltlautgtXMLlt/lautgt
Parser! lt/Begruessunggt ltApplaus
art"anhaltend"/gt lt/xdocgt
21
DOM und XML-Parser
  • Die meisten Parser unterstützen ausschließlich
    DOM Level 1.0
  • DOM Level 1.0 spezifiziert nur, wie man mit dem
    DOM arbeiten kann, nicht wie ein DOM aus einem
    XML-Dokument erzeugt werden kann
  • Unterschiedliche Implementierungen zumeist auf
    Grundlage von SAX

22
DOM und XML-Parser
  • Beispiel JAXP von Sun

DocumentBuilderFactory factory
DocumentBuilderFactory.newInstance() try
factory.setValidating(true) DocumentBuilder
builder factory.newDocumentBuilder()
Document document builder.parse( new
File(argv0) ) catch (SAXParseException spe)
... Fehlerbehandlung ausgeschnitten ...
23
DOM
  • Achtung DOM wird komplett im Hauptspeicher
    gehalten
  • Bei Verarbeitung von großen Dokumenten mit wenig
    Arbeitsspeicher Performanceverlust wegen
    Auslagerung des Speichers

24
XML-Parser in Java
  • JAXP und Project X (Sun)
  • Xerces-J (Apache)
  • XP (James Clark)
  • XML Parser v2 (Oracle)

25
JAXP
  • Java API for XML Parsing
  • stellt Schnittstellen zum Parsen und Manipulieren
    von XML-Dokumenten zur Verfügung
  • zusammen mit Project X als Referenzimplementation
    eines Parsers
  • Java Optional Package mit Paketnamen
    javax.xml.parsers
  • Standarderweiterung des JDK, wird aber noch nicht
    zusammen damit ausgeliefert

26
JAXP
  • Interfaces
  • SAXParserFactory
  • SAXParser
  • DocumentBuilderFactory
  • DocumentBuilder
  • FactoryConfigurationError
  • ParserConfigurationException

27
JAXP
  • Voraussetzungen, um einen Parser in das
    JAXP-Interface "pluggen" zu können
  • Er muß als character set encodings mindestens
    ascii, UTF8 und UTF16 unterstützen
  • Er muß ein Dokument auf seine Wohlgeformtheit
    überprüfen können
  • Er muß ein Dokument auf seine Gültigkeit anhand
    einer DTD überprüfen können

28
JAXP - Project X
  • Project X 1998 als Technology Release 1
  • 1999 Technology Release 2
  • 2000 Referenzimplementation für JAXP
  • erster schneller Parser
  • validierender und nichtvalidierender Parser
  • Unterstützung von SAX 1.0, DOM Level 1.0 und XML
    Namespaces
  • nicht open source, aber Community Source License

29
JAXP - Project X
  • Vorteile
  • hohe Konformität zum XML-Standard
  • hohe Geschwindigkeit
  • gute Dokumentation ( Tutorial, Beispiele, source
    code )

30
Xerces-J
  • xml.apache.org Projekt
  • entstanden aus dem IBM XML4J
  • XML4J gibt es weiterhin und baut auf Xerces-J auf
  • aktuelle Version 1.2.1
  • bietet validierende und nichtvalidierende Parser
  • unterstützt SAX 1.0 und 2.0, DOM Level 1, DOM
    Level 2 beta
  • ansatzweise Unterstützung von XML-Schema

31
Xerces-J
  • open source
  • gute Dokumentation
  • Achtung Dieser Parser liest eine DTD, auch wenn
    er im nicht-validierenden Modus ist

32
XP
  • Autor James Clark Technical Editor der
    XML-Spezifikation
  • zwei Designziele 100 konform zum XML-Standard
    und möglichst schnell
  • dafür Einschränkungen
  • kein validierender Parser,
  • Unterstützung nur von SAX 1.0
  • keine DOM-Unterstützung
  • nur 4 character encodings
  • ErrorHandling "brutal"

33
XP
  • Dokumentation nur API-Doc
  • open source

34
XML Parser v2 (Oracle)
  • validierende und nichtvalidierende Parser
  • Unterstützung von SAX 1.0 und DOM Level 1.0
  • Besonderheit XSLT Modul, mit dem sich XML
    mittels eines Stylesheets in HTML oder ein
    anderes Format umwandeln läßt.
  • Java Beans Komponenten(DOMBuilderBean,
    TreeViewBean, XSLBean)
  • kein open source, kein source code
  • Beispiele API-Dokumentation

35
Parsergenerator XMLBooster
  • generiert XML-Parser für vorher definierte
    Datenstrukturen in Java, C, C, Cobol und Delphi
  • Zunächst Meta-Definition (proprietäres Format,
    DTD-ähnlich) für das benötigte XML-Format
    erstellen
  • Dann Parser generieren lassen und in eigene
    Anwendung integrieren
  • Falls ein geparstes Dokument nicht dem Format
    genügt, wird Fehlermeldung ausgegeben, ansonsten
    erhält man die in der Meta-Definition
    beschriebene Datenstruktur mit Inhalt zurück.

36
Parsergenerator XMLBooster
  • Vorteile
  • Geschwindigkeit
  • Daten gleich in eigener Datenstruktur verfügbar
  • Nachteile
  • proprietäre Meta-Definition
  • nicht frei verfügbar

37
Ende
  • Noch Fragen?
Write a Comment
User Comments (0)
About PowerShow.com