Docstoc

Java und XML

Document Sample
Java und XML Powered By Docstoc
					Java und XML
   Markus Röder
XML
    1. XML ist eine Methode, um strukturierte
       Daten in einer Textdatei darzustellen

• strukturierten Daten sind
     –   Kalkulationstabellen,
     –   Adressbücher,
     –   Konfigurationsparameter,
     –   finanzielle Transaktionen,
     –   technische Zeichnungen usw. zu verstehen.

•    XML ist eine Menge von Regeln, Richtlinien,
     Konventionen


                                                     XML in 10 Punkten
     2. XML sieht fast aus wie HTML, ist aber
                   kein HTML

• Wie HTML verwendet XML Tags (durch '<' und '>' geklammerte
  Wörter)
• Attribute (der Form name="value"),
• aber HTML legt fest, was jedes Tag und Attribut bedeutet
• XML nutzt Tags zur Abgrenzung von Daten
• überlässt die Interpretation der Daten vollkommen der Anwendung,
  die sie verarbeitet.
Mit anderen Worten: wenn Sie "<p>" in einer XML-Datei sehen, sollten Sie nicht annehmen, dass es sich um einen Absatz
         (englisch: paragraph) handelt. Je nach Kontext kann es ein Preis, ein Parameter, eine Person, ein(e) P.... sein
                            (übrigens, wer sagt denn, dass es ein Wort mit einem "p" sein muss?)




                                                                                                 XML in 10 Punkten
      3. XML ist Text, aber nicht zum Lesen


•   XML-Dateien sind Textdateien,
•   XML-Dateien sind viel strikter als für HTML. Ein vergessenes Tag oder ein
    Attribut ohne Anführungszeichen macht die Datei unbrauchbar, während dies
    bei HTML oft explizit erlaubt oder zumindest toleriert wird.
•   In der offziellen XML-Spezifikation steht: Anwendungen dürfen keine
    Vermutungen anstellen, was der Erzeuger einer beschädigten Datei meinte;
    wenn die Datei kaputt ist, muss eine Anwendung genau da anhalten und eine
    Fehlermeldung ausgeben.




                                                               XML in 10 Punkten
      4. XML ist eine Familie von Techniken

•   Hier ein Ausschnitt:
•    Xlink (in Entwicklung seit November 1999), das eine Standardmethode
    beschreibt, um Hyperlinks zu einer XML-Datei hinzuzufügen.
•   XPointer & XFragments (ebenfalls noch in Entwicklung) sind Syntaxen, um
    auf Teile eines XML-Dokuments zu zeigen.
•   CSS, die Style-Sheet-Sprache
•   XSL (Herbst 1999) ist die weiterentwickelte Sprache zum Erstellen von Style
    Sheets. Sie basiert auf XSLT
•   Das DOM ist eine Standardmenge von Funktionsaufrufen zur Manipulation
    von XML- (und HTML-) Dateien aus einer Programmiersprache.
•   XML Namespaces ist eine Spezifikation
•   Die XML Schemas 1 und 2 unterstützen Entwickler bei der präzisen Definition
    ihrer eigenen XML-basierten Formate.


                                                                XML in 10 Punkten
      5. XML ist ausführlich, was aber kein
               Problem darstellt

• XML-Dateien fast immer größer als vergleichbare binäre Formate.
• Programme wie zip und gzip können Dateien sehr gut und sehr schnell
  komprimieren.
• Diese Programme sind für fast alle Plattformen verfügbar (und
  meistens kostenlos).
• Kommunikationsprotokolle wie Modemprotokolle und HTTP/1.1
  können Daten automatisch komprimieren und damit ebenso effektiv
  Bandbreite sparen wie ein binäres Format.




                                                        XML in 10 Punkten
                   6. XML ist neu,
                  aber nicht so neu
•   Die Entwicklung von XML begann 1996
•   Seit Februar 1998 ist es ein W3C-Standard,
•   Vor XML gab es SGML, seit 1986 eine ISO-Norm
•   Vor XML gab es HTML, dessen Entwicklung 1990
    begann.




                                            XML in 10 Punkten
                   7, 8, 9...



• Diese kenne ich selbst noch nicht.




                                       XML in 10 Punkten
    10. XML ist lizenzfrei, plattformunabhängig
                und gut unterstützt

•    Wachsenden Ansammlung von Werkzeugen
     (eines davon macht vielleicht schon das, was Sie brauchen!)

•    und zu einer Menge versierter Fachleute. Sich für XML zu entscheiden, ist fast
     so wie SQL für Datenbanken zu wählen:
•    XML als eine W3C-Entwicklung ist lizenzfrei,
•    XML ist nicht immer die beste Lösung, aber es lohnt sich immer, XML in
     Erwägung zu ziehen




                Miss at your own RISK
                                                                    XML in 10 Punkten
Von SGML zu XML
                               Probleme konkret – 1
•   Was bedeuten diese Daten?
    –   000000072394|00001|Modell|Handy S 200||
        000000072394|00002|Spannung V/Hz|230/50||
        000000072394|00003|Einstellbereich Elektrode A|10-140||
        000000072394|00004|Einstellbereich WIG A|10-150||


    –   0100021324554652 20X0.3MLVOLTAREN OPHTHA SINE EDP ATR0000261106...
        0100036404554770 200MLPREWASH GALL SEIFE       000003100000...
        0100003504556438 30X0.4MLPOLYRINSE LINSEN KLAERER 000008690000...


    –   AENDERN ARTNR 4901 000 155 0
        MATCHCODE                  Knebelschalter u.P.
        BEGINN_TEXT                KURZTEXT
        Knebelschalter u.P.
        ENDE_TEXT                  KURZTEXT
        PREISTYP 0
        PREISPER 1
        BRUTTOPREIS                14,20
        Warengruppe Elektrozubeh”r
        Produktgruppe              Schalter und Taster


    –   <td><b>Microsoft Corp.<b></td><td>MSFT</td><td><b>92,23</b></td>
                    Probleme konkret – 2
Was sind die Daten?
   Die Abgrenzung von Bedeutungseinheiten ist schwer:

    PeterMustermannIsestr. 5323494Hamburg



 Wo sind die Daten?
  Die Ermittlung der Positionen von Bedeutungseinheiten
  ist schwer:
    PeterMustermannIsestr. 5323494Hamburg
     Index: 0   Index: 1   Index: 2   Index: 3
          Nachteile proprietärer Datenformate

• Keine einheitliche Grundstruktur
   – Wechselnde Delimiter, nicht immer zeilenorientiert usw.
• Nicht plattformunabhängig
   – Binärrepräsentation bestimmter Datentypen nicht portabel
• Schwer lesbar
   – Nicht textbasiert
   – Keine Metainformationen
• Unflexibel
   – Keine hierarchischen oder unstrukturierten Daten
• Nicht erweiterbar
   – Grundstruktur und Semantik proprietär
            Das XML-Lösungsangebot – 1
Das sind die Daten!
   Bedeutungseinheiten werden von Tags eingeschlossen.
   Bedeutungseinheiten können geschachtelt werden.

     <Name><Vor>Peter</Vor><Nach>Mustermann</Nach></Name>



 Dort sind die Daten!
  Bedeutungseinheiten können über Namen identifiziert werden.
    <Name><Vor>Peter</Vor><Nach>Mustermann</Nach></Name>
                  „Vor“                 „Nach“



                               „Name“
                   Das XML-Lösungsangebot – 2

•   Standardisiertes Regelwerk
     – Wohlgeformtheitsregeln
     – Standardisiertes Import-Werkzeug: XML-Parser
     – Standardisierte In-memory-Repräsentation: XML DOM
•   Textbasiertes Format
     – Plattformunabhängig
     – Lesbar & einfach zu erzeugen
•   Hierarchische Struktur
     – Kann flache, hierarchische und unstrukturierte Daten transportieren
•   Beliebig »erweiterbar«
     – Eigene XML-Formate werden nach den Wohlgeformtheitsregeln entworfen
     – Optionale Validation / »semantische« Prüfung
          • DTD bzw. XML Schema
                        Wohlgeformtheit


• Eine Auswahl von Regeln:
  – Elemente: Daten zwischen öffnende und schließende Tags
     • Aufbau von Tags ist festgelegt
     • Schließendes Tag kann entfallen, wenn keine Daten umschlossen
       werden sollen
  – Genau 1 Dokumentenelement
  – Elemente können geschachtelt werden
     • Keine Überlappung!
  – Attribute: Name "=" Wert
     • Nur im öffnenden Tag erlaubt
               Vom Text zum Objektmodell: XML DOM


                                       MSXML XML-Parser
                                        Adressen

<Adressen>
                                             Adresse
   <Adresse>
       <Name> Mustermann </Name>                    Name
       <PLZ> 22087 </PLZ>                                  Mustermann
   </Adresse>
                                                    PLZ
   <Adresse     id="1234" >                                22087

                                                           id
   </Adresse>                                 Adresse      1234

</Adressen>
                      XML abstrakt
• Datenserialisierung/-persistenz
  – In-Memory-Datenstrukturen (XML DOM oder
    proprietär) werden auf einen Text abgebildet
      • Text kann übertragen oder gespeichert werden
• Kommunikation ...
  –   zwischen Anwendungen
  –   zwischen Rechnern
  –   zwischen Plattformen
  –   in der Zeit
      • Dieselbe Anwendung arbeitet mit Daten zu verschiedenen
        Zeitpunkten
                   XML-Einsatzgebiete

• XML-Auslöser
  – Web-Client
     • Trennung von Daten und Darstellung
  – Web-Server
• Verallgemeinerungen
  – Applikationskommunikation
     • Vgl. COM vs. CORBA
     • Lose Kopplung
  – Plattformunabhängig persistente Daten
     • Datenaustausch
     • Archivierung
 XML-Landschaft – 1

      Anwendung


      XQL


      XML DOM

                  XML Schema

XSL     XML
                       XML-Landschaft – 2
• XML DOM
   – Generisches Objektmodell für hierarchische Daten
• XSL(T) & CSS
   – XML transformieren nach ...
       • XML
       • HTML
       • andere Datenformate
• XQL/XPath
   – Abfragen auf XML-Daten
• XML Schema
   – Validierung von XML-Daten
   – Datentypen
• Namespaces
   – Daten aus verschiedenen Schemata mischen
                        What´s hot in XML?
• XML2HTML
   – Trennung von Daten und Darstellung
        • XSLT, CSS
        • SQL XML
• Datenaustausch
   – XML2COM
• B2B
   – XML EDI
   – BizTalk
• Web Services
   – SQL XML
• Applikationskommunikation
   – SOAP
   – Objektpersistenz
              Die Grenzen von XML
• Read-Mostly
  – Veränderungen an XML-Daten (in Dateien) sind
    aufwendig
• Kein Ersatz für Datenbanken
  – Zugriff nicht sehr performant, solange (große)
    Datenbestände in Dateien liegen
• Overhead durch Tags
  – Metadaten vergrößern Datenumfang
• Binärdaten müssen selbst kodiert werden
XML ist keine exotische Technologie, sondern
eine (zukünftige) Selbstverständlichkeit wie
Datenbanken, SQL, das Internet oder
Skriptsprachen.
Fragen?




          Uff...
                                                          Ressourcen

•   Microsoft XML Workshop
     –    http://msdn.microsoft.com/xml
•   W3C
     –    http://www.w3c.org/xml
•   XML Informationen/Leitseiten
     –    http://www.xml.com
     –    http://www.xml.org
     –    http://www.ozemail.com.au/~sakthi/Common/xml.html
     –    http://www.xmlinfo.com
     –    http://www.vbxml.com
•   Welche XML-Software gibt es?
     –    http://www.xmlsoftware.com
•   DTD-Generator
     –    http://www.pault.com/Xmltube/dtdgen.html
•   XML Code Generator
     –    http://msdn.microsoft.com/xml/articles/generat.asp
•   Diskussion des MSXML-Test auf www.xml.com
     –    http://msdn.microsoft.com/xml/general/msxmlconform.asp
•   BizTalk
     –    http://www.biztalk.org
•   Bücher / Dokumentation
     –    »XML in Action«, William J. Pardi, MSPress
     –    »XML IE5 Programmer´s Reference«, Alex Homer, Wrox
     –    »Die neue Web-Sprache«, Norbert Hranitzky, http://www.hranitzky.purespace.de/docs/introxml.pdf
       Praktische Anwendungen XML

•   WML
•   XHTML
•   MathML
•   CML
•   SVG
3 Gebote von XML




• Du sollst Deine Elemente immer schließen.

• Du sollst Attributwerte immer in doppelte
  Anführungszeichen setzen.

• Schachtelte Deine Elemente immer
  hierarchisch
 Übung XML

• Erstellen Sie eine xml Datei, die Datensätze
  zu Personen enthält
• 3 Personen mit Name, Vorname, Adresse,
  und möglichen Kontaktdaten, wie
  Datum, Grund des Kontaktes
• Es soll pro Person möglich sein mehrere
  Kontaktinformationen zu speichern
 Übung - Attribute

• Erweitern Sie Ihre XML Datei, indem Sie
  den Personen noch ein Attribut Alter und
  ein Attribut id hinzufügen
• Den Kontaktdatensätzen fügen Sie bitte
  noch das Attribut typ hinzu, das die Werte
  tel, fax, brief, persoenlich enthalten kann
           Teile einer XML Struktur

• <?xml version=„1.0“ encoding=„...“ ?>
• Elemente <Adresse></Adresse>
    – Leere Elemente <Alter age=„10“/>
•   Attribute <Adresse id=„001“> ...
•   Kommentare <!-- Kommentar -->
•   PI <? use-processor „p1“ ?>
•   CDATA ... weiter nächste Seite
           Teile einer XML Datei

• CDATA
  <![CDATA[hier kann alles <p> stehen]]>
• Zeichen-Referenzen : z.B: &#64 &#xA3
• Entitäts-Referenzen : &gt; &lt; &amp;
•
          Kurzeinführung in DTD

• Document Type Definition

• z.B :
  <!ELEMENT person (name,child*)>
  <!ELEMENT child (name)>
  <!ELEMENT name (#PCDATA)>
         Komplexe Strukturen

<!ELEMENT person (name)
   muss genau einmal erscheinen
<!ELEMENT personen (*person)
   0 .... n mal
<!ELEMENT kontakt (+datum)
   1 ... n mal
<!ELEMENT person (?ehemann)
   0 ... 1 mal
 Übung 2 - DTD

• Erzeugen Sie eine DTD für Ihre
  Personendatei
• Definieren Sie
  – <!ELEMENT name (#PCDATA)>
            Einbinden in XML

<? xml version=„1.0“ ?>
<!DOCTYPE person SYSTEM „person.dtd“>
<person>
  <name>Markus</name>
  <child><name>Susu</name></child>
  <child><name>Mimi</name></child>
</person>
           Gültig oder Wohlgeformt ?

• Wohlgeformt
  – Syntax von XML wird eingehalten
  – Wurzelelement existiert
  – Korrekte Verschachtelung
• Gültig
  – Wohlgeformt
  – Entspricht DT Definitionen
                 Validieren

• Nicht - Validierende Parser überprüfen
  Wohlgeformtheit

• Validierende Parser überprüfen Gültigkeit
            DTD Spezialitäten

• ENTITY
  <!ENTITY mac „<name>Röder</name>
                 <vorname>mac</vorname>“>
  Benutzung mit &mac;
                    Attribute

•   Zeichenkettenattribute
•   Aufzählungsattribute
•   Notationsattribute
•   Tokenattribute
    – id
    – idref
    – idrefs
            Attribute definieren

<!ELEMENT email (#PCDATA)>
  <!ATTLIST email
     id ID #REQUIRED
     priority (high | low |medium) #REQUIRED
     type CDATA #IMPLIED
  >
 Übung 2 - DTD Attribute

• Erweitern Sie Ihre DTD mit den
  Attributwerten mittels
  – <!ATTLIST .......


• Binden Sie Ihre DTD in Ihre xml Datei
  mittels
                        Namespace

Namespaces sind eine Erweiterung des Elementnamen oder
  des Attributnamens um eine URI
Mehrere Namespaces können in einer XML Datei benutzt
  werden.

xmlns:mr =„www.erex.de/definition/mr“
xmlns:hans =„www.hans.de/wasweissich/namen“
   <mr:Adresse>
     <hans:Adresse> .... </hans:Adresse>
       ....
   </mr:Adresse>
Java und XML
                  DB -> XML

• Mögliche Varianten
  –   DB - JDBC:ODBC -> XML
  –   XML - Database mit XML nativ Data (Tamino)
  –   Servlets mit Taglibs
  –   Cocoon und XSP
      (XML - Server Pages
            XML erzeugen per JDBC

•   Lade Treiber
•   Erzeuge Connection
•   Erzeuge Statement
•   Datenbankabfrage per executeQuery
•   Ergebnis der Abfrage liegt als Resultset vor.

• Ausgabe in Stream
SUN ONE
Web Services
       Welche Parser gibt es
•   XML4J (IBM)
•   crimson
•   Xerces
•   Aelfred
•   kxml
•   ....
                   SAX

• Simple API for XML
• speziell für XML entwickelt
• XML Dokument als Folge von
  (vorbeihuschenden) Ereignissen
• Eventorientierte Methoden - Callbacks
• Entwicklung von Megginson Tech. Inc
     (www.megginson.com)
                  DOM

• erzeugt aus XML Datei eine Baumstruktur
• Methoden zum Navigieren durch den Baum
• Speicherverbrauch hoch, da XML
  Dokument im Speicher verarbeitet wird
                Java und XML

•   Java API for XML Processing (JAXP)
•   Java Architecture for XML Binding (JAXB)
•   Java API for XML Messaging (JAXM)
•   Java API for XML-based RPC (JAX-RPC)
•   Java API for XML Registries (JAXR)
•   Long Term JavaBeans Persistence
                   JAXP

• Java API für XML Parsers
• SAX DOM und XSLT - Support
• Erlaubt „einfaches“ wechseln von Parsern
  ohne Codeänderung
                 JAXB

• JavaTM Architecture for XML Binding
• Early Access Release
• Ermöglicht es aus XML Schema Klassen zu
  generieren.
• Klassen kümmern sich dann um die
  Formatierung und das Parsen
• Meist effizienter als DOM und SAX
                         SAX - How to ...

•   Instanziere XMLParser, der das XMLReader Interface implementiert hat
•   parser.parse (filename) lädt und parst eine Datei
•   dabei catch IOException. und SAXException.
•   implementiere einen Content-Handler
     – optional noch DTDHandler und
     – EntityResolver
                 Content Handler

• org.xml.sax.ContentHandler
• Benötigt Locator und Attributes Klassen
• Wichtige Methoden
  –   startDocument(...), endDocument(...)
  –   startElement(...), endElement(...)
  –   characters(...)
  –   ignorableWhitespace(...)
  –   setDocumentLocator(...)
                        Locator

• Zeigt an, an welcher Stelle im XML File ein Event
  aufgetreten ist
• Aktuelle Location ist nur zur Laufzeit gültig
• Will man es später benutzen, sollte man den Locator
  zwischenspeichern.
• ...
  private Locator locator
  public void setDocumentLocator (Locator locator) {
       this.locator = locator;
  }
       Start und Ende eines Dokuments

• Das Event startDocument ereignet sich um den
  wirklichen Beginn des Parsens anzuzeigen.
• Es ist das erste Event das stattfindet (Außer:
  setDocumentLocator()
• endDocument ist das allerletzte
• Beide Events feuern SAXExceptions
                         Namespace Callbacks

z.B
      <root>
           <element1>
                <myNamespace:element2 xmlns:myNamespace=„http:...“>
                     <myNamespace:element3>Hallo </myNamespace:element3>
                </myNamespace:element2 >
           </element1>
      </root>


      Ein Namespace kann entweder für das ganze Dokument oder für einen Teil
         definiert werden
         startPrefixMapping gibt den Start an
         startPrefixMapping logischerweise das Ende des Bereichs
                  Elemente

• Elemente werden indentifiziert
• Attribute werden aufgelistet
• Die nächste Information ist Text oder
  weitere Elemente
                Element Daten

• characters(char[] ch, int start, int length)
• Verschiedene Parser splitten Text auch mal
  und schicken Ihn in einzelnen Stücken
• char Array ist offen für eine Erweiterung
  der SAX Api, bei der ein Vorauslesen von
  Daten denkbar wäre
         Leerzeichen (Whitespace)

• ignorableWhitespace(char[] , int, int)
• enthält die formatierenden Leerzeichen und
  Zeilenumbrüchen, die benutzt werden um
  den Text lesbarer zu gestalten.
               skipped Entities

• Wird nur von ganz speziellen Parsern
  aufgerufen, da die meisten die Entities
  auflösen
             SAX20 Extensions

• Optionale Erweiterungen für Parser
  – DeclHandler (DTD Parsing)
  – LexicalHandler (Kommentare und CDATA)
               Fehlerbehandlung

   – org,xml.sax.ErrorHandler
   – org.xml.sax.SaxParseException
• Sax Fehler Meldungen
   – Warning
   – Error
   – Fatal Error
• Durch feuern einer SAXException in der Fehler-
  callback - funktion kann der Parsevorgang beendet
  werden.
                    Parser - Warnings

• Meist fehlende Definitionen aus der DTD
  o.ä
• Definiert in der XML 1.0 Spezifikation
  – z.B: At user option, an XML processor may issue a warning when
    a declaration mentions an element type for which no declaration is
    provided, but this is not an error.

  – z.B. At user option, an XML processor may issue a warning if
    attributes are declared for an element type not itself declared, but
    this is not an error.
              Non-Fatal Errors

• Es ist ein Fehler aufgetreten, bei dem das
  Dokument den XML Regeln wiederspricht,
  doch der normale Parse-Vorgang fortgesetzt
  werden kann.
• Tritt meist nur beim Validieren auf.
• Ein XML Dokument, das der DTD
  widerspricht ist trotzdem kein fatal Error.
                Fatal Error

• Sollte immer zum Parse-Abbruch führen, da
  nur wirklich schwere Fehler erzeugt
  werden.
• Falsche DTD Sysntax gibt auch einen Fatal
  Error
                        SAXParserFactory

public abstract SAXParserFactory {

public static SAXParserFactory newInstance()
public abstract SAXParser newSAXParser ()
    throws ParserConfigurationException, SAXException;
public void setNamespaceAware (boolean awareness);
public void setValidating (boolean validating);
...
public abstract void setFeature (String name, boolean value)
public abstract boolean getFeature (String name)
}
            Bsp: Xerces Features

• http://xml.apache.org/xerces-j/features.html
                interface Attributes (collection)
                            für SAX
 Ersetzt und implementiert AttributeList
•This interface allows access to a list of attributes in three different ways:
 by attribute index;
 by Namespace-qualified name; or
    by qualified (prefixed) name.

•     int getIndex(java.lang.String qName)
•     int getLength()
•     java.lang.String getLocalName(int index)
•     java.lang.String getQName(int index)
•     java.lang.String getType(int index)
•     java.lang.String getURI(int index)
•     java.lang.String getValue(int index)
•     java.lang.String getValue(java.lang.String qName)

•     Nicht mehr gültig nach Callbackende
                    DOM Parser

• Erzeugt einen DOM Tree
• import org.apache.xerces.parsers.DOMParser;
   – Xerces bietet DOM und SAX
• parser.parse
• alte Versionen haben beim Parsen ein Document Object
  geliefert
• Vereinheitlichung; heute mit getDocument();
                       Was für ein Node-Type

• (Node) node.getNodeType()
• Klasse org.w3c.dom.Node
•   MÖGLICHE WERTE
•   static short ATTRIBUTE_NODE
•   static short CDATA_SECTION_NODE
•   static short COMMENT_NODE
•   static short DOCUMENT_FRAGMENT_NODE
•   static short DOCUMENT_NODE
•   static short DOCUMENT_TYPE_NODE
•   static short ELEMENT_NODE
•   static short ENTITY_NODE
•   static short ENTITY_REFERENCE_NODE
•   static short NOTATION_NODE
•   static short PROCESSING_INSTRUCTION_NODE
•   static short TEXT_NODE
             DOCUMENT_NODE


• Document ist eine Erweiterung der Node
  selbst.
• Enthält DTD und andere Elemente
• RootNode kann davon gebildet werden mit
  doc.getDocumentElement()
                    DOM element

• besteht aus Name, Attribut und Wert
  – name : getNodeName()
• Hat evtl. noch Nachkommen
  – public NodeList getChildNodes()
• Für XML to XML gilt folgende Ausgabe
  –   < name
  –   atributliste >
  –   Nachkommen oder Wert
  –   </name>
                        collection NodeList

• Was sagt die Documentation
     The NodeList interface provides the abstraction of an ordered
     collection of nodes, without defining or constraining how this
     collection is implemented. NodeList objects in the DOM are live.

     The items in the NodeList are accessible via an integral index,
     starting from 0.
    int getLength()          Anzahl der Nodes in der Liste
•   Node item(int index) gibt den Node aus der Liste zurück
• nodelist = node.getChildNodes();
• Aber Vorsicht : Keine normale Collection
               Attribute auflisten

• Rückgabe über (Node).getAttributes ()
• Rückgabetyp: interface NamedNodeMap
  – Ist Liste von Node : mit item (index) Zugriff
    auf einen AttributKnoten
             Ausgabe per Transform (JAXP)

• DOMSource
    – Acts as a holder for a transformation Source tree in the form of a
      Document Object Model (DOM) tree.
• TransformerFactory.newTransformer erzeugt :
• Transform
    – An instance of this abstract class can transform a source tree into a result
      tree.

    – Transform.transform
• transform(Source xmlSource, Result outputTarget)
    – Process the source tree to the output result.

• Result
    – DOMResult oder SAXResult oder StreamResult
                  JDOM
• komplett JAVA 2 basierte API
• nur für JAVA
• kann auch andere Formate als XML
  verarbeiten
• folgt bekannten JAVA Regeln
• kaum Interfaces, so ist es z.B einfach
  möglich sofort ein Document ohne Parser
  zu erzeugen
• Eigener DOM Tree
         SAX, DOM oder JDOM???

• DOM kann in jeder Sprache benutzt werden
  und ist allgemeingültig
• SAX braucht nicht das ganze Dokument
  erst in den Speicher zu laden.
• JDOM benötigt das Dokument nicht
  vollständig im Speicher, doch arbeitet nicht
  mit Events. Java-typischer.
       3 Wege zum JDOM Document

• Direkt von einem DOM mittels
  DOMBuilder Class
• Indirekt über SAX mittels SAXBuilder
  Class (Bevorzugte Weg)
• Mittels JDOM Klassen (z.B für neue
  JDOMs)
            Output von JDOM

• als DOM
• als SAX Events
• File oder Stream (xml Dokument)
             JDOM Packages

•   org.jdom
•   input
•   output
•   DOM Adapters
                            Übungen

• SAX: Schreibe eine Funktion, die Fehler in einem Protokoll ablegt.
  ! Achtung: Was passiert, Wenn Log nicht geschrieben werden kann?
• VCard Application
• DOM: Lese Datei ein - Füge einen Datensatz hinzu und schreibe
  Ergebnis wieder in Datei.
• Erzeugen eines JTree aus einem JDOM Tree. Jeder Knoten wird ein
  Vector Element. Nur eine einfache Liste. Kein vollständiger Baum.
• Erzeuge eine DTD aus einer XML Datei (SAX)

				
DOCUMENT INFO
Shared By:
Categories:
Stats:
views:36
posted:5/6/2010
language:German
pages:85