XML og JDOM. Helge Furuseth

Like dokumenter
1. XML Grunnlag

1. XHTML. Innhold Innledning

XML. Figur Et eksempel på et XML-dokument

Navngivning av XML elementer

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

INF 1010, vår 2005 Løsningsforslag uke 11

1. Lage og vise et enkelt XML-dokument

INF Løsning på seminaropppgaver til uke 8

Markeringsspråk og XML Nettsider og XHTML

INF Notat om I/O i Java

Læringsmål XML. Markering av tekst. SGML-familien. Forstå prinsippene bak XML og XHTML. Forstå hva XML kan brukes til og hvordan.

Løsningsforslag til eksamen i INF1000 våren 2006

MOD 250 Avansert programvareteknologi Extensible Markup Language, XML

OPPGAVE 5b og 8b Java Kode

IN Notat om I/O i Java

Semistrukturerte data og XML

TOD063 Datastrukturer og algoritmer

INF2100. Oppgaver 23. og 24. september 2010

HØGSKOLEN I SØR-TRØNDELAG

Markeringsspråk og XML

INF1010 våren 2018 tirsdag 23. januar

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring -

Konstruktører. Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver. skjer følgende:

Objektorientert Programmering Ekstraordinær eksamen 2014

braarkiv WS API Versjon 4.0.0

MPEG-7. Problemstilling:

1. Mer om oppbyning av XML-dokument

Intro til WWW, HTML5 og CSS

Jentetreff INF1000 Debugging i Java

INF2100. Oppgaver 26. september til 1. oktober 2007

Klasser, objekter, pekere og UML. INF gruppe 13

INF2100. Oppgaver 9. oktober 2012 C 100 X 10

INF2100. Oppgaver 6. og 11. oktober 2011 C 100 X 10

INF2100. Oppgaver uke 40 og

Løsningsforslag Test 2

NB!!! Veldig korte svar er gitt her. Disse burde det vært skrevet mer på ved en eksamen..

import java.io.*; import java.util.*; import javagently.text;

XML - kurs. XML-kurs for nybegynnere. ICONS Management Elisabeth Buntz

Eksamen Objektorientert Programmering 2012

Implementering av caching ved hjelp av Spring. Christian Vestøl

Eksamen i Internetteknologi Fagkode: ITE1526

I dag: Neste gang: Hva er tekstkoding? Hva er en tekstfil? DASP107 Innføring i språk og data DASP108 Språk og data

Socket og ServerSocket

</html> </head> <form action= rtkst.php > <p> Fornavn? <input type= text name= fornavn <input type= submit />

Rammer. Mer om Javascript

HØGSKOLEN I SØR-TRØNDELAG

Stilark Cascading Style Sheets - CSS

Stilark Cascading Style Sheets - CSS

HUMIT1731. Tekstkoding. Koding/merking av tekst Uke 35. Tekster som teknologiske produkter. Koding/merking på flere nivå. Utvikling av notesystemet

INF1010 våren 2019 Onsdag 30. januar. Mer om unntak i Java (med litt repetisjon av I/O først)

INF1010, 15. januar time. Parametriserte klasser (generiske klasser) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

INF100 Institutt for informatikk Universitetet i Bergen Øving 5

Videregående programmering 6

INF2100. Oppgave 1, 2 og 3. Løsningsforslag til oppgaver 23. og 24. september Her er det mange mulige løsninger her er én: import java.io.

INF1000: Forelesning 7

Tre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm

Eksempel 1 Eksempel 2 Dramatisering. INF1000 uke 3. Sundvollen 7. september 2015 Dag Langmyhr. INF1000 Sundvollen

INF1000 (Uke 5) Mer om løkker, arrayer og metoder

Data. Dette refereres til som objektets tilstander. Funksjonalitet. Dette refereres til som objektets metoder.

extensible Markup Language XML

Universitetet i Oslo Institutt for informatikk. avmystifisert i INF102. Kvile

INF1010, 21. februar Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

Oblig 4Hybelhus litt mer tips enn i oppgaven

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I Løsningsforslag

INF2100. Oppgave 1. Oppgave 2 4. Løsningsforslag til oppgaver uke 40 og Se figur 1 på neste side.

En klasse er noe - en metode gjør noe (! / # <= (! * +!! ",-' %. "- -/ %.!#) )! " 0'%! * *$! "1-)) '' % '. 22!'( 7/ /! * 2 2! "*"% 8"%% 9 - -!

Syntaksanalyse. Skanner (repetisjon) Parsering top-down bottom-up LL(1)-parsering Recursive descent Forutsetninger. IN 211 Programmeringsspråk

INF1000: Forelesning 7. Konstruktører Static


Tilstandsmaskiner med UML og Java

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) Løsningsforslag

XML og XHTML. Hva er nå egentlig denne teksten? Et litt mer avansert XML-eksempel. Et meget enkelt XML-eksempel. For å få fortalt hva teksten er

HØGSKOLEN I SØR-TRØNDELAG

EKSAMEN Webpublisering

import java.util.arraylist;

IN2030. Oppgave 1. Løsningsforslag. Uke (Disse filene finnes også i mappen ~inf2100/e/e2/.)

UNIVERSITETET I OSLO

Fra problem til program

Web fundamentals. Web design. Frontend vs. Backend Webdesign 17. januar Monica Strand

1. Finn klassene (hvilke objekter er det i problemet) 1. Dataene som beskriver problemet (hvilke objekter har vi og hvor mange klasser er det?

HVA ER XML? extensible Markup Language En standardisert måte å strukturere ulike typer data Åpent format Enkelt:

INF1010 våren 2017 Onsdag 25. januar. Litt om unntak i Java

/** * */ public Aktivitet(String navn, String krop, Objekt objekt, Model model) { if(funk.od) System.out.println(" - " + navn + " : " + krop);

Løsningsskisse prøve IT1

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

Forelesning inf Java 5

IN2010: Algoritmer og Datastrukturer Series 2

INF1000-SIKT - Notat om I/O i Java

Forelesning inf Java 5

INF1010, 21. januar Klasser med parametre = Parametriserte klasser = Generiske klasser

Markeringsspråk og XML

Kapittel 1: Datamaskiner og programmeringsspråk. Java som første programmeringsspråk

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2

Algoritmer og datastrukturer A.1 Filbehandling på bit-nivå

Eksamen. Objektorientert Programmering IGR 1372

Del 3: Evaluere uttrykk

INF1010 våren januar. Objektorientering i Java

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4

Forelesning inf Java 4

UNIVERSITETET I OSLO

Transkript:

XML og JDOM Helge Furuseth furuseth@idi.ntnu.no

XML XML = Extensible Markup Language Basert på SGML Standard Generalized Markup Language HTML = Hypertext Markup Language Også basert på SGML Mange likheter

HTML

HTML-kode <html> <head> <title>jons HTML-dokument</title> </head> <body bgcolor="yellow"> <h1 align=center>jons HTML-overskrift</h1> <p>bla bla bla, <br> bla bla <P>Bla bla bla </body> </html>

XML-kode <html> <head> <title>jons XML-dokument</title> </head> <body bgcolor="yellow"> <h1 align="center">jons h1-element</h1> <p>bla bla bla, <br/> bla bla</p> <p>bla bla bla</p> </body> </html>

Forskjeller fra HTML XML har strengere syntaks XML har ingen semantikk XML er utvidbart (extensible)

Strengere syntaks Case-sensitiv <tag> forskjellig fra <TAG> Slutt-tagger påbudt <br> alene ulovlig <br></br> eller <br/> Attributtverdier må ha anførselstegn Galt: <h1 align=center> Riktig: <h1 align= center >

Ingen semantikk

Utvidbart Lag egne tagger og attributter <?xml version="1.0"?> <person id= helgemann" location="itvest-060"> <name>helge Furuseth</name> <description> <text> Helge er student ved IDI og und.ass i sif8040 </text> </description> </person>

Dokumentbeskrivelse Document Type Description (DTD) beskriver XML dokumentets oppbygging <!DOCTYPE person [ <!ELEMENT person (name, description)> <!ELEMENT name (#PCDATA)> <!ELEMENT description (text, imageurl?)> <!ELEMENT text (#PCDATA)> <!ELEMENT imageurl (#PCDATA)> ]> <!ATTLIST person id CDATA #REQUIRED> <!ATTLIST person location CDATA #IMPLIED>

Parsing XML parses slik at applikasjonen kan forstå det Sjekker for syntaks (vel-formethet) og kan validere dette mot en DTD Mest vanlig: DOM (Document Object Model) og SAX (Simple API for XML)

Navnerom XML som beskriver en tabell: <table> <row> <data>apples</data> <data>bananas</data> <row> </table> XML som beskriver et bord: <table> <name>african Coffee Table</name> <width>80</width> <length>120</length> </table>

Navnerom (2) <gui:table xmlns:gui= http://www.idi.ntnu.no/gui > <gui:row> <gui:data>apples</gui:data> <gui:data>bananas</gui:data> <gui:row> </gui:table> <furniture:table xmlns:furniture= http://www.furniture.no > <furniture:name> African Coffee Table </furniture:name> <furniture:width>80</furniture:width> <furniture:length>120</furniture:length> </furniture:table>

Default Namespaces and Scope <table xmlns= http://www.idi.ntnu.no/gui > <row> <data> <furniture:table xmlns:furniture= http://www.furniture.no > <furniture:name> African Coffee Table </furniture:name> <furniture:width>80</furniture:width> <furniture:length>120</furniture:length> </furniture:table> </data> <row> </table>

JDOM http://www.jdom.org

JDOM Java-klasser som representerer XMLdokumenter Java Document Object Model Alternativ til DOM (og SAX) org.jdom.* Viktige klasser: Element Attribute Document

Element Element(String name) Attributter: setattribute(string name, String value) String getattributevalue(string name) Attribute getattribute(string name) Barn: addcontent(element child / String text) Element getchild(string name) String gettext() List getchildren()

Attribute Attribute(String name, String value) Verdi-metoder: String getvalue() int getintvalue() boolean getbooleanvalue() osv. Element-metoder ofte tilstrekkelig

Document Document(Element rootelement) Element getrootelement()

Hente innhold <?xml version="1.0"?> <person id= helgemann" location="itvest-060"> <name>helge Furuseth</name> <description> <text> Helge er student ved IDI og und.ass i sif8040 </text> </description> </person> Element rootelement = mittxmldocument.getrootelement(); Element description = rootelement.getchild( description"); Element descriptiontext = description.getchild( text ); String text = descriptiontext.gettext();

Hent innhold direkte <?xml version="1.0"?> <person id= helgemann" location="itvest-060"> <name>helge Furuseth</name> <description> <text> Helge er student ved IDI og und.ass i sif8040 </text> </description> </person> String text = mittxmldocument.getrootelement().getchild( description").getchild( text ).gettext();

Legg til innhold Element imageurl = new Element( imageurl"); Text text = new Text ( http://www.stud.ntnu.no/~furuseth/meg.jpeg"); imageurl.addcontent (text); mittxmldocument.getrootelement().getchild( description").addcontent (imageurl); <?xml version="1.0"?> <person id= helgemann" location="itvest-060"> <name>helge Furuseth</name> <description> <text> Helge er student ved IDI og und.ass i sif8040 </text> <imageurl>http://www.stud.ntnu.no/~furuseth/meg.jpeg</imageurl> </description> </person>

XML-output org.jdom.output.xmloutputter XMLOutputter(String indent, boolean newlines) output(document, Writer/OutputStream) output(element, Writer/OutputStream)

XML-input org.jdom.input.saxbuilder SAXBuilder(String saxparserclassname) new SAXBuilder( org.apache.xerces.parsers.saxparser ) Document build(file/reader/inputstream)

Innputt/utputt eksempel import java.io.*; import org.jdom.*; import org.jdom.input.*; import org.jdom.output.*; public class PrettyPrinter { public static void main(string[] args) { // Anta at argument er filnavn String filename = args[0]; try { // Bygger dokument med SAX uten validering SAXBuilder builder = new SAXBuilder(); // Lager document Document doc = builder.build(new File(filename)); } } // Skriver ut dokument til standard utputt XMLOutputter fmt = new XMLOutputter(); fmt.output(doc, System.out); } catch(exceptione) { e.printstacktrace(); }

XML-output eksempel Document minxml = ; //Generer Document URL url = new URL ( protokoll://gribb06.idi.ntnu.no:5555 ); URLConnection connection = url.openconnection(); OutputStream out = connection.getoutputstream(); XMLOutputter outputter = new XMLOutputter (, false); Outputter.output (minxml, out);