Webserverprogrammering



Relaterede dokumenter
Web Services Light. Karen Thomsen. Silkeborg Bibliotek. Karen Thomsen

SAX Simple API for XML.

Netværk & elektronik

Videregående programmering i Java

Webservice til upload af produktionstilladelser

SAX Simple API for XML.

Skriftlig eksamen i Datalogi

XML parsning i Java. Denne artikel beskriver hvordan man parser XML i Java. Den beskriver W3C DOM, SAX og JDOM.

Integrationsmanual. Anvendelse af webservice til kursusoversigt i Campus. Brugervejledning til udviklere

Web- og serverprogrammering

Software Construction 1 semester (SWC) Spørgsmål 1

Abstrakte datatyper C#-version

Dag 10 Flertrådet programmering

A Profile for Safety Critical Java

Web- og serverprogrammering

Model Drevet Design i Praksis

DTD Document Type Definition:

LESSOR-5. Inquiry (teknisk beskrivelse) Tilgængelighed for andre systemer

/05/2013 Tilføjet dokumentation af bvn input for GetEngagementDetailed

Databaseadgang fra Java

Objektorienterede metoder

Kursus navn: Indledende programmering Kursus nr

BRP Kursusintroduktion og Java-oversigt

Webservices. hvad er det og hvad kan det bruges til? Rikke Lose Databasekonsulent, DBC

Affaldsdatasystem Vejledning supplement i system-til-system integration for.net brugere

Synkronisering af datastrukturer i et opgavestyrings system

Jacob Nordfalk. Ingeniørhøjskolen i København. Nykøbing F itvisioncenter 24. februar 2004

Tredjepart webservices

Tree klassen fra sidste forelæsning

1.1 Formål Webservicen gør det muligt for eksterne parter, at fremsøge informationer om elevers fravær.

EG Data Inform. Byggebasen. WCF og webservices. Jens Karsø

Introduktion til ActionScript, fortsat

PROGRAM. using System; using System.Collections.Generic; using System.Text; using System.Collections;

0KAPITEL 2: UDLÆSNING TIL WORD OG EXCEL

FESD-standardiseringsgruppen Att: Palle Aagaard IT- og Telestyrelsen IT-strategisk kontor Holsteinsgade København Ø

DATALOGI 0GB. Skriftlig eksamen tirsdag den 6. januar 2004

Uniq.Survey-Xact.DK. Vejledning. Rambøll Management Olof Palmes Allé 20 DK-8200 Århus N Denmark. Tlf:

Stokermonitor. Webprojekt 2008 Datalogisk Institut, Aarhus Universitet Forelæser: Kristian Bisgaard Lassen Dato: 28. Marts 2008

ELEKTRONISK INDBERETNING BØRNEDATABASEN VIA DGWS 13/ VERSION 1.02

Data load og udtræk. 2. iteration: implmentation (test af backend) PHP mysql. Loade og parse XML (SimpleXML, Xpath) Filhåndtering i PHP JSON

Nemhandel infrastruktur. Morten Hougesen Christian Uldall Pedersen 8. April 2010

Løsning af skyline-problemet

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

Specifikation Abstrakt OO OS-API Rev Specifikation. Abstrakt, objektorienteret operativsystem-api

XML-sprog til diagramgenerering via XSLT fra en webservice

Klasser og Objekter i Python. Uge 46 Learning Python: kap 15-16,

Design by Contract. Design and Programming by Contract. Oversigt. Prædikater

Introduktion til ActionScript

SWC eksamens-spørgsmål. Oversigt

DM507 Algoritmer og datastrukturer

Fra Informationsmodel til en DTD

Dokumentet giver en beskrivelse af anvendelsen af den webservice der er tilknyttet GIS (Generisk Integration Snitflade) til Navision Stat.

Klasser og nedarvning

Grænseflade til afhentning og indberetning af prøvekarakterer i dansk og matematik på Optagelse.dk

DOtAB. Teknisk rapport

DESIGNDOKUMENT (Teknisk dokumentation)

DANMARKS TEKNISKE UNIVERSITET

Dokumentation. Udbyder : sms1919.dk Service : push Version : v1.21

Transkript:

Webserverprogrammering WSP fortsat - dag 11 Behandling af XML (StAX) Syndikering og RSS med XML JAXB - XML Java-objekter Projekthjælp Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html

Nem generering af XML fra Java-objekter Javabønner og almindelige objekter (strenge, ArrayList, Date,...) kan nemt gemmes som XML. ArrayList<String> liste; // gem som XML XMLEncoder kal = new XMLEncoder(new FileOutputStream("liste.xml")); kal.writeobject(liste); kal.close(); // indlæs fra XML-fil på disken XMLDecoder kal = new XMLDecoder(new FileInputStream("liste.xml")); liste = (ArrayList) kal.readobject(); kal.close(); <?xml version="1.0" encoding="utf-8"?> <java version="1.4.2_03" class="java.beans.xmldecoder"> <object class="java.util.arraylist"> <void method="add"> <string></string> </void> <void method="add"> <string>undervise</string> ᄑ </void> <void method="add"> <string></string> </void>

Nem generering af XML fra Java-objekter Kun egenskaber gemmes Hvad hvis der kommer flere til? Fjernes nogen? Nogen omdøbes (for) ufleksibelt format til vigtige filer Det er godt nok "XML", men det er meget nært knyttet til Java og svært at ændre.

Bogstavsuppe JAXP - Java API for XML Processing en samlende betegnelse for SAX DOM XSLT StAX og brug af XPath JAXB - Java Architecture for XML Binding teknologier til XML Java-objekter

xjc JAXB - Java Architecture for XML Binding genererer Javaklasser fra bl.a. DTD, XML Schema, WSDL. xjc -nv -d src -p org.apertium.dtd -dtd /data/local/share/apertium/dix.dtd schemagen genererer et XML Schma fra javaklasser

JAXB <!ELEMENT pardefs (pardef+)> <!ELEMENT pardef (e+)> <!ATTLIST pardef n CDATA #REQUIRED > <!ATTLIST pardef c CDATA #IMPLIED > <!ELEMENT section (e+)> <!ATTLIST section id ID #REQUIRED type (standard inconditional postblank preblank) #REQUIRED @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "", proporder = { "iorporparorre" ) @XmlRootElement(name = "e") public class E {... @XmlAttribute @XmlJavaTypeAdapter(CollapsedStringAdapter.class) protected String r; @XmlAttribute @XmlJavaTypeAdapter(NormalizedStringAdapter.class) protected String lm; > <!ELEMENT e (i p par re)+> <!ATTLIST e r (LR RL) #IMPLIED lm CDATA #IMPLIED a CDATA #IMPLIED c CDATA #IMPLIED i CDATA #IMPLIED slr CDATA #IMPLIED srl CDATA #IMPLIED > public String getr() { return r; public void setr(string value) { this.r = value; protected List<Object> iorporparorre; public List<Object> getiorporparorre() { if (iorporparorre == null) { iorporparorre = new ArrayList<Object>(); return this.iorporparorre;

XPath Demo Se http://javabog.dk:8080/jsp-utf-8/kode/kapitel_11/

<?xml version="1.0" encoding="iso 8859 1"?> <rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22 rdf syntax ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" > <channel rdf:about="http://www1.dr.dk/nyheder/"> <title>dr Nyheder</title> <link>http://www1.dr.dk/nyheder/</link> <description>nyheder Danmarks Radio</description> <dc:language>da</dc:language> <items> <rdf:seq> <rdf:li rdf:resource="http://www.dr.dk/nyheder/udland/article.jhtml?articleid=152959" /> <rdf:li rdf:resource="http://www.dr.dk/nyheder/udland/article.jhtml?articleid=152957" /> <rdf:li rdf:resource="http://www.dr.dk/nyheder/indland/article.jhtml?articleid=152958" /> <rdf:li rdf:resource="http://www.dr.dk/nyheder/udland/article.jhtml?articleid=152956" /> </rdf:seq> </items> </channel> <item rdf:about="http://www.dr.dk/nyheder/udland/article.jhtml?articleid=152959"> <title>voldsomme uroligheder i Mellemøsten</title> <link>http://www.dr.dk/nyheder/udland/article.jhtml?articleid=152959</link> <description>der har været uroligheder ved Gaza striben i Israel.</description> </item> <item rdf:about="http://www.dr.dk/nyheder/udland/article.jhtml?articleid=152957"> <title>syv dømt til døden i Rwanda</title> <link>http://www.dr.dk/nyheder/udland/article.jhtml?articleid=152957</link> <description>i Rwanda er syv personer blevet dømt til døden for at have dræbt et vidne til folkemordet for 10 år siden.</description> </item> <item rdf:about="http://www.dr.dk/nyheder/indland/article.jhtml?articleid=152958"> <title>brigadegeneral langer ud efter regeringen</title> <link>http://www.dr.dk/nyheder/indland/article.jhtml?articleid=152958</link> <description>regeringen ser ud til at være vendt 180 grader på cirka tre måneder i spørgsmålet om en reform af forsvaret.</description> </item>

Implementation med JSTL <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x"%> <html> <head><title>syndikering med JSTL og XML</title></head> <body> <c:import var="rsskilde" url="http://rss.asdf.dk/dr.rss"/> <x:parse var="rss" xml="${rsskilde"/> <h1> <x:out select="$rss//*[name()='channel']/*[name()='description'][1]" escapexml="false"/> </h1> Læs flere nyheder <a href="<x:out select="$rss//*[name()='channel']/*[name()='link'][1]"/>">her</a> <ul> <x:foreach select="$rss//*[name()='item']"> <li> <x:out select="./*[name()='title']" escapexml="false"/><br> <font size=" 1"> <x:out select="./*[name()='description']" escapexml="false"/> <a href="<x:out select="./*[name()='link']"/>">mere info</a><br><br> </font> </li> </x:foreach> </ul> </body> </html>

StAX - Streaming API for XML "As fast as SAX, almost as convenient as DOM" XML-parsning foregår a la med en iterator (ved at iterere igennem elementerne) public interface XMLStreamReader { public int next(); public boolean hasnext(); public String gettext(); public String getlocalname(); public String getnamespaceuri();... // retur f.eks. START_ELEMENT, eller END_DOCUMENT // tagnavn uden præfiks XMLInputFactory factory = XMLInputFactory.newInstance(); XMLStreamReader reader = factory.createxmlstreamreader(new FileReader(file));... while (true) { int event = parser.next(); if (event == XMLStreamConstants.END_DOCUMENT) { parser.close(); break; if (event == XMLStreamConstants.START_ELEMENT) { System.out.println(parser.getLocalName());

StAX - Streaming API for XML XML-skrivning understøttes også, med lignende API public interface XMLStreamWriter {... public void writestartelement(string localname) public void writeendelement() public void writecharacters(string text) StAX er nem og næsten lige så hurtig til SAX Varianter findes der er hurtigere end SAX Oprindeligt Java, nu også C-implementationer

StAX - Streaming API for XML Feature StAX SAX DOM TrAX API Type Pull, streamin g Push, streaming In memory XSLT tree Rule Ease of Use High Medium High Medium XPath Capability No No Yes Yes CPU and Memory Efficiency Good Good Varies Varies Forward Only Yes Yes No No Read XML Yes Yes Yes Yes Write XML Yes No Yes Yes Create, Read, Update, Delete No No Yes No Kilde: http://java.sun.com/webservices/docs/1.6/tutorial/doc/

Webtjenester SOAP (Simple Object Access Protocol) Kald til fjernobjekter som om de var lokale objekter Kommunikationen over nettet foregår som XML Maskine A Maskine B klient metodekald skel metodekald interface til serverobjekt stub serverobjekt

Webtjenester WSDL (Web Service Definition Language) XML-dokument, der beskriver webtjeneste i detaljer SOAPRequest, SOAPResponse UDDI (Universal Description and Discovery Integration) En slags De Gule Sider-telefonbog over webtjenester Hvis man man vil udgive sin webservice til offentlig brug brugerne ved, de skal kigge efter dem i UDDI'er UDDI blev droppet igen i 2006 af stort set alle