E-Business und E-Service

Slides:



Advertisements
Ähnliche Präsentationen
Blue J.
Advertisements

der Universität Oldenburg
Entwicklung UnivIS-Anbindung auf Basis von PHP und DOM-XML
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
XML.
Paul, Morten, Yannick Blue J. Entwicklungsumgebung versteht Java Programmcode versteht Java Programmcode Für die Entwicklung eigener Software.
FH-Hof Extensible Markup Language Richard Göbel. FH-Hof Extensible Markup Language XML XML ist universeller Ansatz für die Strukturierung von Zeichenketten.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
DOM (Document Object Model)
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
XINDICE The Apache XML Project Name: Jacqueline Langhorst
XPATH XML Path Language. Xpath – XML Path Language IT Zertifikat - Daten und Metadatenstandards: XPath 2 Entwicklung des W3C Adressierungssprache für.
XML - Abfragesprache Xpath. Problemstellung Unsere XML-Datei steht und wir wollen alle 1. Titel aller vergangenen Sendungen automatisch aus den Playlists.
XML-Schema HKI Proseminar Wintersemester 2010/11 Dozentin: Frau Kurz von Jan Kohl und Christian Lütticke.
XML-Parser Manuel Röllinghoff.
Document Object Model (DOM)
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 9 Claudio Moraga; Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
XML Standardisierungen und Abfragesprachen
Speicherung von XML- Dokumenten als Large Objects.
Einführung XML XML Einführung Andreas Leicht.
Programmieren mit JAVA
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Janick Martinez 1 Performancebetrachtung typischer XML-Operationen Seminar XML und intelligente Systeme Wintersemester.
Xlink / Xpointer - Framework
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
DVG Klassen und Objekte
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Einführung in die Programmierung Datensammlung
CRM Editor auf der Basis von Qt (Beispiel von Ubi erat Lupa)
FH-Hof 1 XML-Parser Richard Göbel. FH-Hof 2 XML-Parser- DOM Object Tree Parser Objekt der Klasse 'DocumentBuilderFactory' mit 'newInstance()' erzeugen.
Seminar XML und Datenbanken Speicherung von XML-Werten vor SQL:2003.
D O M Document Object Model
Die Persistenzschicht
XSLT.
Was umfaßt die CORBA Core Spezifikation? Welche zusätzlichen Komponenten muß ein ORB Produkt beinhalten? Core: CORBA Objekt Modell CORBA Architektur OMG.
Vortrag HTML, XHTML, DHTML
Java programmieren mit JavaKara
Vom XML Schema zur relationalen Datenbank Seminararbeit zum Multimedia-Seminar im SS 2002 Erstellt von: Thomas Dickel.
XML - verwandte Standards
XML - Konzepte XHTML XML Base XPath XInclude XLink XForms XPointer
Eine Implementierung einer effiziente externe geordnete (!) lineare Liste Operationen: Search(x) Insert(x) Delete(x)
Datenbanktechnologie Daniel Ebner SS Mai Ulrike Lohner.
Wird ganz am Anfang der HTML-Datei geschrieben Doctype html public bedeutet, dass man sich auf die Öffentlichkeit der html-dtd bezieht Html ist die meist.
Java für Fortgeschrittene
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
XPath Was ist XPath XPath ist eine Syntax für das Definieren der Teile eines XML-Dokumentes. XPath benutzt Pfade, um XML-Elemente zu definieren. XPath.
Ausgabe vom Seite 1, XML Eine Einführung XML - Eine Einführung.
Oliver Spritzendorfer Thomas Fekete
XML und Datenbanken © 2006 Markus Röder
XML (Extensible Markup Language)
Objectives Verstehen was unterDelegate verstanden wird
Kurzpräsentation von Herbert Schlechta
2002 XML 10.1XML I (Parsing) 17.1XML II (XLST,XPATH) (keinPraktikum) 24.1XML III FOP 31.1Cocoon2, XSP 7.2Struts, Turbine, Velocity 14.2Testat / Evaluation.
SQLite und XML in PHP 5.
XSL in der Praxis Anwendungsbeispiele für die eXtensible Stylesheet Language Andreas Kühne XML One 2000.
Drucken mit XSL-FO DaimlerChrysler  Drucken von Webseiten
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
© 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg.
XML-Verarbeitung mit dem.NET-Framework. Inhalt 1.XML-Verarbeitung mittels XmlReader- und XmlWriter-basierter Klassen 2.XML-Verarbeitung mittels XmlDocument.
Hauptseminar Web-Services und verteilte Datenbanken Thema XML, DTDs und XML-Schema XML, DTDs und XML-Schema - Stefan Kurz, 25. April 2003.
1 Java und XML Stephan Baldes Warum XML? In welchem Format wurden die Daten gespeichert? Bernd;Thomas;3;5;1987;Freiburg;Karlsruhe Peter;Maier;7;9;1980;Karlsruhe;Freiburg.
Die STL. Schreiben und Lesen von Dateien  Einbinden von  Lesen und Schreiben über stream-Objekte Streams führen Transformationen zwischen Programmobjekten.
XML und Java Verarbeitung von XML-Dokumenten mit JAVA.
13.Dezember 2006–1Elektronisches Publizieren: Schemasprachen — Relax NG Schemasprachen für XML — Relax NG — Anne Brüggemann-Klein TU München.
 Präsentation transkript:

E-Business und E-Service DOM-Bearbeitung von XML Norbert Helminger 26. November 2001

Gliederung Einleitung: Was ist DOM? Erzeugen eines DOM-Objektes DOM-Baumstruktur Methoden zum Lesen der Attribute zum Navigieren im Baum zum Verändern des Baumes Kritikpunkte und Alternativen 26.11.2001 Norbert Helminger

Was ist das Document Object Model (DOM)? standardisiertes Objektmodell für XML-Dokumente Abstraktion des XML-Infosets auf ein Objektmodell Satz von Schnittstellen, der ein XML-Dokument in einer Baumstruktur darstellt standardisiertes API für die Verarbeitung von XML-Dokumenten (W3C-DOM-Arbeitsgruppe) 26.11.2001 Norbert Helminger

Was kann DOM? definiert logische Struktur eines Dokuments definiert die Möglichkeiten des Zugriffs und der Manipulation managed die Daten eines XML-Dokuments abstrahiert die eckigen Klammern und die Zeichenreferenzen des Serialisierungsformats kann mit jeder Programmiersprache verwendet werden 26.11.2001 Norbert Helminger

Arbeitsweise von DOM liest gesamtes XML-Dokument auf einmal ein (mit Hilfe eines Parsers) teilt es in Objekte in einer Art Baumstruktur auf behält gesamtes Dokument im Speicher kann auf beliebige Objekte zugreifen kann das Dokument beliebig verändern 26.11.2001 Norbert Helminger

Beispiel eines XML-Dokuments <?xml version=„1.0“?> <?order alpha ascending?> <art xmlns=‚http://www.art.org/schemas/art‘> <period name=„Renaissance“> <artist>Leonardo da Vinci</artist> <artist>Michelangelo</artist> <artist>Donatello</artist> </period> <!-- insert period here --> </art> 26.11.2001 Norbert Helminger

DOM-Struktur des Beispiels Wurzelknoten Dokument Wurzelelementknoten (Dokumentelement) ProcessingInstruction Element Element Kommentar Attr Element Element Element Text Text Text Text 26.11.2001 Norbert Helminger

Gliederung Einleitung: Was ist DOM? Erzeugen eines DOM-Objektes DOM-Baumstruktur Methoden zum Lesen der Attribute zum Navigieren im Baum zum Verändern des Baumes Kritikpunkte und Alternativen 26.11.2001 Norbert Helminger

Erzeugen eines DOM-Objektes abstrakte Schnittstelle: kein new-Aufruf möglich Implementierung der DOM-Schnittstelle muss ein Objekt einer DOMImplementation zur Verfügung stellen Aufruf der Methoden createDocument bzw. createDocumentType 26.11.2001 Norbert Helminger

Erzeugen eines Dokuments import org.w3c.dom.*; Document create() { DOMImplementation impl = loadDOM(); DocumentType dtd = impl.createDocumentType( “foo:bar”, “-//FooBar//”, “foo.dtd”); return impl.createDocument(“http://foo.com/schema/”, “foo:bar”, dtd); } anschließend können dem Dokument Objekte hinzugefügt werden 26.11.2001 Norbert Helminger

Einlesen eines XML-Dokuments mit Hilfe eines DOM-Parsers ganzes XML-Dokument kann automatisch in ein DOM-Objekt umgewandelt werden parser.parse(xmlfile); Document doc = parser.getDocument(); 26.11.2001 Norbert Helminger

Gliederung Einleitung: Was ist DOM? Erzeugen eines DOM-Objektes DOM-Baumstruktur Methoden zum Lesen der Attribute zum Navigieren im Baum zum Verändern des Baumes Kritikpunkte und Alternativen 26.11.2001 Norbert Helminger

Baumstruktur von DOM Basisknoten Node alle Knoten sind von diesem abgeleitet definiert grundlegende Funktionalität (Attribute, Methoden und Konstanten) aller Knotentypen Nachteil: einige Operationen nicht auf jeden Knotentyp anwendbar 26.11.2001 Norbert Helminger

ProcessingInstruction DOM-Schnittstellen <<interface>> EntityReference <<interface>> Element <<interface>> Attr <<interface>> Document <<interface>> Node +getAttributeNS() +getAttributeNodeNS() +setAttributeNS() +setAttributeNodeNS() +removeAttributeNS() +removeAttributeNodeNS() +hasAttributeNS() +getElementsByTagNameNS() +getTagName() +getSpecified() +getOwnerElement() +setValue() +getValue() +getName() +getDoctype() +getDocumentElement() +createElementNS() +createElement() +createDocumentFragment() +createComment() +createCDATASection() +createProcessingInstruction() +createAttributeNS() +createAttribute() +createEntityReference() +getElementByTagNameNS() +getElementsByTagName() +importNode() +getElementById() +getNodeType() +getNodeName() +getNamespaceURI() +getPrefix() +getLocalName() +getNodeValue() +getParentNode() +getChildNodes() +getFirstChild() +getLastChild() +getPreviousSibling() +getNextSibling() +getAttributes() +getOwnerDocument() +insertBefore() +replaceChild() +removeChild() +appendChild() +hasChildNodes() +cloneNodes() +supports() <<interface>> Entity +getSystemId() +getPublicId() +getNotationName() <<interface>> Notation +getSystemId() +getPublicId() <<interface>> ProcessingInstruction <<interface>> DOMImplementation +getTarget() +getData() +setData() <<interface>> DocumentFragment <<interface>> CDATASection +hasFeature() +createDocument() +createDocumentType() +getSystemId() +getPublicId() <<interface>> CharacterData <<interface>> NamedNodeMap <<interface>> NodeList <<interface>> Text +getData() +getLength() +substringData() +setData() +appendData() +insertData() +deleteData() +replaceData() <<interface>> DocumentType +getNamedItem() +getNamedItemNS() +setNamedItem() +setNamedItemNS() +removeNamedItem() +removeNamedItemNS() +item() +item() +length() +splitText() <<interface>> Comment +getName() +getEntities() +setNotations() +getPublicId() +getSystemId() +getInternalSubset()

Knotentypen Node Document Element CharacterData Text CDATASection Comment Attr Entity ProcessingInstruction DocumentType 26.11.2001 Norbert Helminger

Basisknoten (Node) Attribute nodeType: für jeden Knotentypen eine eigene Konstante (z.B. ELEMENT_NODE) Kompatibilitätsprüfung nodeName, namespaceURI, localName, prefix: zur Unterstützung der zugewiesenen Objektnamen nodeValue: Wert des Knoten ownerDocument: Referenz auf das Dokument parentNode, firstChild ... benachbarte Knoten Methoden zum Lesen, Navigieren und Verändern 26.11.2001 Norbert Helminger

Dokumentknoten (Document) Wurzelknoten Fabrik für neue Knoten: createElement(), createComment() ... hat zwei Unterknoten: Wurzelelement des Dokuments Knoten des Dokumenttyps 26.11.2001 Norbert Helminger

Elementknoten (Element) einzelne Tags des XML-Dokuments: Methoden zum Verändern der Attribute Zugriff auf alle Unterelemente eines Tagnamens: getElementsByTagName(namespaceURI, localname) Beispiel: <artist> 26.11.2001 Norbert Helminger

CharacterData-Knoten Basisschnittstelle für Text-, CDATASection- und Comment-Knoten grundlegende Methoden zur Textbearbeitung keine Ausprägung in einem XML-Dokument 26.11.2001 Norbert Helminger

Textknoten (Text) häufigster CharacterData-Knoten repräsentiert den Zeicheninhalt eines Elements bzw. Attributs darf kein Markup enthalten Methode normalize(): keine angrenzenden Textknoten Beispiel: Leonardo da Vinci 26.11.2001 Norbert Helminger

Beispiel Text.normalize() #document #document Element #text hello world normalize Element #text #text #text hello wo rld 26.11.2001 Norbert Helminger

CDATASection-/Comment- Knoten Unterschnittstelle von Text kann Markup enthalten Comment: erweitert CharacterData repräsentiert Kommentare Beispiel: <!-- insert period here--> 26.11.2001 Norbert Helminger

Attributknoten (Attr) beinhalten variable = value Paare eines Elements existieren nur im Kontext des Tags ownerElement: zugehöriger Elementknoten parent == null Beispiel: name = „Renaissance“ 26.11.2001 Norbert Helminger

Entitätsknoten (Entity) Speichereinheiten, die Inhalte oder Inhaltsbeschreibungen enthalten bei mehrmaligem Vorkommen können nur gelesen werden werden im DocumentType gespeichert verkomplizieren Abarbeitung von XML-Dokumenten 26.11.2001 Norbert Helminger

ProcessingInstruction-Knoten am Beginn der XML-Datei zur Kontrolle von externen Programmen zum Ordnen von Elementen Beispiel: <?order alpha ascending?> 26.11.2001 Norbert Helminger

Dokumenttypknoten (DocumentType) Platzhalter für die DTD Liste von Entitäten und Notationen: NamedNodeMap Attribut der Document-Schnittstelle 26.11.2001 Norbert Helminger

DOM-Struktur des Beispiels #document Knotentypen Dokument order art Element alpha ascending period #comment name Attr insert period here #text artist artist artist Text Renaissance #text #text #text PI/Kommentar Leonardo da Vinci Michelangelo Donatello 26.11.2001 Norbert Helminger

Beziehungen zwischen Knoten Attribute parentNode, firstChild ... definieren die Baumstruktur parent/child-Attribute folgen lebendig jeder Änderung im Baum  dynamische Anpassung der Attribute  Vorsicht bei Operationen am Baum 26.11.2001 Norbert Helminger

Eltern-Kinder-Beziehungen #document ownerDocument parentNode art Attribute (ungeordnet) period period period date-range name previousSibling nextSibling #text #text artist artist artist children (geordnet) firstChild lastChild 26.11.2001 Norbert Helminger

Gliederung Einleitung: Was ist DOM? Erzeugen eines DOM-Objektes DOM-Baumstruktur Methoden zum Lesen der Attribute zum Navigieren im Baum zum Verändern des Baumes Kritikpunkte und Alternativen 26.11.2001 Norbert Helminger

Methoden zum Lesen der Attribute getNodeType getNodeName getNamespaceURI getPrefix getLocalName getNodeValue getOwnerDocument getAttributes 26.11.2001 Norbert Helminger

Methoden zum Navigieren getParentNode getChildNodes hasChildNodes getFirstChild getLastChild getPreviousSibling getNextSibling 26.11.2001 Norbert Helminger

Baum durchlaufen keine Methode zum Durchlaufen des Baumes void traverseTree(Node current) { myProcessNode(current); for (Node child = current.getFirstChild(); child != null; child = child.getNextSibling() ) traverseTree(child); } Durchlaufen in die andere Richtung void traverseTreeReverse(Node current) { for (Node child = current.getLastChild(); child != null; child = child.getPreviousSibling() ) traverseTreeReverse(child); 26.11.2001 Norbert Helminger

Baum durchlaufen 1 #document 2 art 3 6 8 9 period period period period 7 artist artist artist artist artist artist 4 5 10 11 12 1, 2, 3 ... Abarbeitungsreihenfolge der Knoten in der Methode traverseTree 26.11.2001 Norbert Helminger

Methoden zum Verändern appendChild insertBefore replaceChild removeChild cloneNode 26.11.2001 Norbert Helminger

Einfügen von neuen Knoten appendChild(Node newChild) fügt am Ende der Liste der Tochterknoten einen neuen Knoten ein insertBefore(Node newChild, Node refChild) fügt einen neuen Knoten vor dem Referenzknoten ein bei erneutem Einfügen eines bereits vorhan-denen Knotens wird dieser nur verschoben 26.11.2001 Norbert Helminger

Beispiel Einfügen import org.w3c.dom.*; void addTwoPeriods(Document doc, Node art) { Node newChild1 = doc.createElementNS( “http://www.art.org/schemas/art”, “period”); art.appendChild(newChild1); Node newChild2 = doc.createElementNS( Node pos = art.getFirstChild().getNextSibling(); Node insertedNode = art.insertBefore(newChild2, pos); assert(newChild2 == insertedNode); assert(insertedNode == art.getChildNodes().item(1)); } 26.11.2001 Norbert Helminger

Beispiel Einfügen #document period #document art child1 child2 newChild2 (appendChild) art period newChild1 (insertBefore) period period child1 child2 26.11.2001 Norbert Helminger

Ersetzen bzw. Löschen von Knoten replaceChild(Node newChild, Node oldChild) kombiniert Einfügen und Löschen eines Knotens removeChild(Node oldChild) entfernt einen Knoten aus dem Dokument 26.11.2001 Norbert Helminger

Beispiel Ersetzen/Löschen import org.w3c.dom.*; void removeAndReplace(Document doc, Node art) { Node newChild = doc.createElementNS( “http://www.art.org/schemas/art”, “period”); art.replaceChild(newChild, art.getFirstChild()); art.removeChild(art.getLastChild()); } 26.11.2001 Norbert Helminger

Beispiel Ersetzen/Löschen #document #document period art newChild child2 #document art period newChild art replaceChild removeChild period period child1 child2 26.11.2001 Norbert Helminger

Duplizieren von Knoten cloneNode(boolean deep) liefert eine exakte Kopie des Knotens deep-Parameter true: Kopie inklusive Tochterknoten import org.w3c.dom.*; void cloneLastPeriod(Node art) { Node clone = art.getLastChild().cloneNode(true); art.appendChild(clone); } 26.11.2001 Norbert Helminger

Beispiel Duplizieren #document art appendChild period artist period cloneNode artist artist 26.11.2001 Norbert Helminger

Gliederung Einleitung: Was ist DOM? Erzeugen eines DOM-Objektes DOM-Baumstruktur Methoden zum Lesen der Attribute zum Navigieren im Baum zum Verändern des Baumes Kritikpunkte und Alternativen 26.11.2001 Norbert Helminger

Kritikpunkte an DOM gesamtes Dokument im Speicher keine Ein- bzw. Ausgabeoperationen gibt auch Objekte, die zwar das Interface implementieren, sonst aber wenig machen  Probleme mit der Performance bei größeren Dokumenten 26.11.2001 Norbert Helminger

Alternative SAX Simple API for XML Menge von Streaming-Schnittstellen, die ein XML-Dokument in eine lineare Sequenz bekannter Methodenaufrufe zerlegen XML-Dokument nur einmal durchlaufen XML-Dokument dem gewünschten Output sehr ähnlich 26.11.2001 Norbert Helminger

Wann soll DOM verwendet werden? XML-Dokument in einer Baumstruktur anzeigen Elemente dem Dokument hinzugefügt ausreichend Hauptspeicher Verarbeitungsgeschwindigkeit ist nicht so wichtig 26.11.2001 Norbert Helminger

Zusammenfassung Aufbau einer DOM-Baumstruktur Methoden zum Lesen der Attribute Methoden zum Navigieren im Baum Methoden zum Verändern des Baums Performance-Probleme 26.11.2001 Norbert Helminger

Literaturangaben Don Box, Aaron Skonnard, John Lam: Essential XML - XML für die Softwareentwicklung, Addison-Wesley, 2001. Elke Niedermair, Michael Niedermair: Das große Buch XML, Data Becker, Düsseldorf, 2001. Mark Johnson: Programming XML in Java, Part 3 - DOMination, July 2000, http://www.javaworld.com/jw-07-2000/jw-0707-xmldom.html. Philippe Le Hégaret: What is the Document Object Model? September 2001, www.w3.org/DOM/. 26.11.2001 Norbert Helminger