Hjem Personlig finansiering Bygge tilpasset kode med Java API for XML Binding (JAXB) - dummies

Bygge tilpasset kode med Java API for XML Binding (JAXB) - dummies

Innholdsfortegnelse:

Video: Web Programming - Computer Science for Business Leaders 2016 2025

Video: Web Programming - Computer Science for Business Leaders 2016 2025
Anonim

Du kan bygge tilpasset kode med JAXB - Java API for XML-binding . Med JAXB tar du et XML-dokument, og du lager en Java-klassefil som er perfekt for behandling av dokumentet. Når dine behov endres og klassen ikke lenger gjør det du vil at den skal gjøre, skaffer du bare en ny underklasse.

Når du skriver SAX eller DOM-kode, oppretter du et XML-behandlingsprogram. Programmet ditt leser et dokument, og bruker dokumentet til å gjøre nyttig arbeid - starter med noe ufarlig som offentlig tomgangstillegg eller knutepunkt. getNodeName (). Uansett, gjør programmet ditt ingen forutsetninger om hva som er inne i dokumentet. Dokumentet har et rotelement, noen barnelementer, og det er alt. Eventuelle spesielle forutsetninger du gjør om dette dokumentet, begrenser faktisk bruken av koden.

Allsidig kode versus tilpasset kode

Vurder koden i oppføringer 1 og 2. Oppføring 1, skanner fem noder i et dokumenttre. De fem noder må ordnes på en bestemt måte, ellers krasjer programmet. (Oppføringen vil ha en kommentar og en rotnode, med minst to barn rett under rotnoden.)

Liste 1: Viser noen noder

import org. W3C. dom. node;

import org. W3C. dom. NamedNodeMap;

klasse MyTreeTraverser

{

MyTreeTraverser (Node node)

{

System. ute. println (node. getNodeName ());

node = node. getFirstChild ();

System. ute. println (node. getNodeName ());

node = node. getNextSibling ();

System. ute. println (node. getNodeName ());

node = node. getFirstChild ();

System. ute. println (node. getNodeName ());

node = node. getNextSibling ();

System. ute. println (node. getNodeName ());

}

}

Oppføring 2: Å krysse DOM-treet

import org. W3C. dom. node;

import org. W3C. dom. NamedNodeMap;

klasse MyTreeTraverser

{

Node node;

MyTreeTraverser (Node node)

{

dette. node = node;

display ();

displayValue ();

hvis (node. GetNodeType () == Knutep. ELEMENT_NODE) ​​

displayAttributes ();

System. ute. println ();

displayChildren ();

}

void displayName ()

{

System. ute. skriv ut ("Navn:");

System. ute. println (node. getNodeName ());

}

void displayValue ()

{

String nodeValue = node. getNodeValue ();

hvis (nodeValue! = Null)

nodeValue = nodeValue. trim ();

System. ute. skriv ut ("verdi:");

System. ute. println (nodevalue);

}

void displayAttributes ()

{

NamedNodeMap attribs = node. getAttributes ();

for (int i = 0; i

{

System. ute. println ();

System. ute. skriv ut ("Attributt:");

System. ute. print (attribs. item (i). getNodeName ());

System. ute. skriv ut ("=");

System. ute. println (attribs. item (i). getNodeValue ());

}

}

void displayChildren ()

{

Node barn = node. getFirstChild ();

mens (barn! = Null)

{

ny MyTreeTraverser (barn);

barn = barn. getNextSibling ();

}

}

}

Koden i liste 2 er mye mer generell. Denne koden kontrollerer dokumentstrukturen når den kjører. Når koden finner en barneknude, skanner den barnet og ser etter barnebarn. Hvis det ikke er noen barnebarn, ser koden etter brødre og søstre. Koden kan håndtere et hvilket som helst dokumenttreet - enten det har en node eller tusen noder.

Listing 2 er således mer allsidig enn Listing 1. Men denne allsidigheten kommer med ulemper - inkludert muligheten for svært høye kostnader. Koden i Liste 2 må analysere hele XML-dokumentet - og deretter vise en representasjon av dokumentets tre i datamaskinens minne. Hvis dokumentet er veldig stort, er representasjonen stor: Minne blir oppblåst med alle de midlertidige dataene, og koden i liste 2 bremser til en gjennomsøking.

Fordelene med tilpasning

Tenk deg at du prøver å kjøre til Faneuil Hall i Boston, Massachusetts. Det spiller ingen rolle hvor du starter fra; turen vil alltid være forvirrende og vanskelig. Uansett må du planlegge ruten din. Du kan gå seg vill i nærliggende Revere eller Cambridge eller i sentrum av Boston. Avhengig av ressursene dine, har du to alternativer:

  • Du kan stoppe ved en bensinstasjon og kjøpe et kart. Hvis du gjør det, kan du aldri komme til Faneuil Hall. Tross alt må du finne hvor du er på kartet, se etter alternative ruter, velg en rute, og deretter (himmelen hjelper deg), prøv å følge ruten uten å gå seg vill igjen.
  • Du kan fortelle det dyre, snakkede GPS-systemet du vil komme til Faneuil Hall. Systemet vil plotte en tilpasset rute og veilede deg, sving av sving, fra det uhyggelige stedet du befinner deg i den optimale ruten som fører derfra til Faneuil Hall. Ruten er så tilpasset at GPS-stemmen sier (for eksempel), "Det er ingen tegn på dette veikrysset, men sving til venstre uansett. "Senere sier stemmen" Det er to tegn på dette skjæringspunktet, og tegnene står i motsetning til hverandre. Men sving til høyre uansett. "

Bruk av papirkartet tar mer arbeid (mer tid, krefter, fingerferdighet og tålmodighet) enn å bruke den snakkende GPS-en. Hvorfor? Fordi papirarket ikke er tilpasset dine spesifikke behov; I virkeligheten står det: "Her er hele Boston hovedstadsområde. Faneuil Hall er der inne et sted. Du finne ut hva du skal gjøre neste. "

Et tilpasset system er (som du kanskje regner med) lettere å bruke enn det som ikke er skreddersydd for din umiddelbare situasjon. XML-behandlingskoden til Listing 2 gjør dermed et stort ressursgulpende DOM-tre i datamaskinens minneplass ("Her er treet - du finne ut hva du skal gjøre neste …") fordi koden er ikke ' t tilpasset.Koden fungerer for ethvert gammelt dokument - ikke bare det du har ved hånden - og gobbles alltid ressurser for å gjøre det.

Essensen av JAXB

Tanken bak JAXB er å lage skreddersydd klasse for å møte dine nåværende behov. Du tar beskrivelsen av et XML-dokument, kjører det gjennom et spesielt program kalt en skjema kompiler , og får en helt ny klasse kalt generert klasse . Denne genererte klassen er strømlinjeformet for å fungere med bestemte XML-dokumenter.

For eksempel, hvis XML-dokumentene dine har elementer som heter Total, kan den genererte klassen ha setTotal og getTotal-metoder. Hvis et dokuments element har et fullName-attributt, kan den genererte klassen ha setFullName og getFullName-metoder. (Se Figur 1.)

Forbindelsen mellom en del av et XML-dokument og en del av en Java-klasse kalles en binding . Med alle disse bindingene representerer en forekomst av klassen et enkelt XML-dokument.

Figur 1: Et objekt representerer et dokument.

Så hvordan kobler du et objekt med et XML-dokument? Vel, den genererte klassen har metoder som heter unmarshal og marshal. (Se figur 2.)

  • Den ujevne metoden leser en XML-fil. Metoden får verdier fra XML-dokumentet, og tilordner disse verdiene til variabler i Java-objektet.
  • Marshalmetoden skriver en XML-fil. Metoden får verdier fra Java-objektet, og bruker disse verdiene til å opprette XML-dokumentet.

Med metoder som disse kan du hente og modifisere dataene i et XML-dokument.

Figur 2: Lese og skrive verdier.

Bygge tilpasset kode med Java API for XML Binding (JAXB) - dummies

Redaktørens valg

Vis resultatene i forhold til et målområde i Excel-oversiktspanelet - dummies

Vis resultatene i forhold til et målområde i Excel-oversiktspanelet - dummies

Noen ganger trenger du målserier i Excel-oversikten og rapportene dine. I enkelte bedrifter er et mål ikke en verdi - det er en rekke verdier. Det vil si at målet er å holde seg innenfor et definert målområde. Tenk deg at du klarer en liten bedrift som selger esker med kjøtt. En del av jobben din er å ...

Slicer Tilpasninger for Slicers på Excel Dashboard - dummies

Slicer Tilpasninger for Slicers på Excel Dashboard - dummies

Hvis du skal bruke slicers på en Excel-dashbordet, bør du gjøre litt formatering for å få dine skiver til å passe til temaet og oppsettet på instrumentpanelet. Følgende diskusjon dekker noen formateringsjusteringer du kan gjøre til dine skiver. Størrelse og plassering av skiver En skiver oppfører seg som en standard Excel ...

Enkel statistikk i Excel Data Analyse - dummies

Enkel statistikk i Excel Data Analyse - dummies

Excel gir flere praktiske, brukervennlige verktøy for å analysere informasjon som du lagrer i et bord, inkludert noen raske og skitne statistiske verktøy. Se på følgende enkle bord. En enkel dagligvareliste. Et av de smaleste og raskeste verktøyene som Excel gir, er muligheten til enkelt å beregne summen, gjennomsnittet, antall, minimum og maksimum av ...

Redaktørens valg

Bruk fanen Filtre til å modifisere QuickBooks 2014 Rapporter - dummies

Bruk fanen Filtre til å modifisere QuickBooks 2014 Rapporter - dummies

Filtrene kategorien er trolig den mest interessante og en nyttig kategori som er levert av dialogboksen QuickBooks Modify Report. Filtre-fanen lar deg sette opp filtre som du kan bruke til å angi hvilken informasjon som oppsummeres i rapporten. For å bruke Filtrer-fanen velger du først feltet du vil ha ...

Bruk skjermfeltet til å modifisere QuickBooks 2012-rapporter - dummies

Bruk skjermfeltet til å modifisere QuickBooks 2012-rapporter - dummies

Hvis du klikker Tilpass rapport- QuickBooks viser dialogboksen Endre rapport, som du kan bruke til å tilpasse en rapport. Når du tilpasser en rapport, endrer du rapportens utseende, layout og informasjonen som den oppsummerer. Dialogboksen Endre rapport ser annerledes ut for ulike rapporttyper. Likevel, hvis du ser forbi ...

Slik bruker du QuickBooks for din hvite papir forretningsplan - dummies

Slik bruker du QuickBooks for din hvite papir forretningsplan - dummies

QuickBooks kan hjelpe deg skriv en hvit-papir forretningsplan. Folk skriver ofte en forretningsplan for hvitt papir når de vet at de trenger en strategisk plan, men ikke ønsker å ta de harde beslutningene som er nødvendige for en strategisk plan. Personen i denne konfronten skriver en lang hvit-papir forretningsplan for å camouflere den fraværende strategiske planen. ...

Redaktørens valg

Canon 60D elektronisk nivåfunksjon - dummies

Canon 60D elektronisk nivåfunksjon - dummies

Ikke hvert fotografi må være nivå med horisonten. Imidlertid lider mange typer bilder (landskap, bybilder og arkitektonisk fotografi) sterkt når kameraet er vippet. Den gammeldags løsningen for å utjevne kameraet ditt er å bruke et boble- eller åndnivå (funnet i fotobutikker) for å kontrollere kameraets justering med ...

Kamerainnstillingsdisplayet på et Canon EOS Rebel T3-serie Kamera-dummies

Kamerainnstillingsdisplayet på et Canon EOS Rebel T3-serie Kamera-dummies

På din Canon Rebel T3 eller T3i, kan du se en samling av tilleggsinnstillingsdata via kamerainnstillingsdisplayet. Denne skjermen er bare et informasjonsverktøy, men; Du kan ikke justere noen av de rapporterte innstillingene fra denne skjermen. For å vise skjermbildet Kamerainnstillinger på T3i, vis først innstillingsinnstillingene ...

Canon EOS 70D Kameraoppsett - dummies

Canon EOS 70D Kameraoppsett - dummies

Her er en oversikt over knappene, ringer og andre eksterne kontroller på Canon EOS 70D-kameraet ditt. Objektivet vist i de følgende figurene er Canon EF-S 18-135mm IS (bildestabiliseringsmodell) som selges med kameraet; Andre linser kan variere.