Hjem Personlig finansiering Bygning Brugerdefineret kode med Java API til XML-binding (JAXB) - dummies

Bygning Brugerdefineret kode med Java API til XML-binding (JAXB) - dummies

Indholdsfortegnelse:

Video: Week 9 2024

Video: Week 9 2024
Anonim

Du kan opbygge brugerdefineret kode med JAXB - Java API til XML-binding . Med JAXB tager du et XML-dokument, og du laver en Java-klassefil, der er perfekt til behandling af dokumentet. Når dine behov ændrer sig, og klassen ikke længere gør hvad du vil have det, gør du bare en ny underklasse.

Når du skriver SAX eller DOM-kode, opretter du et XML-behandlingsprogram. Dit program læser et dokument, og bruger dokumentet til at udføre nyttigt arbejde - startende med noget harmløst som offentlig tomgangstildeling eller knudepunkt. getNodeName (). Uanset hvad, dit program giver ingen antagelser om, hvad der er inde i dokumentet. Dokumentet har et rodelement, nogle barnelementer, og det er alt. Eventuelle særlige antagelser, du laver om dette dokument, begrænser faktisk kodenes brugbarhed.

Alsidig kode versus brugerdefineret kode

Overvej koden i Listings 1 og 2. Listing 1 scanner fem noder i et dokumenttræ. Disse fem noder skal arrangeres på en bestemt måde, ellers kolliderer programmet. (Listingen ønsker en kommentar og en rodknude med mindst to børn direkte under rodknuden.)

Listing 1: Viser et par noder

import org. W3C. dom. Knude;

import org. W3C. dom. NamedNodeMap;

klasse MyTreeTraverser

{

MyTreeTraverser (Node node)

{

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

node = node. getFirstChild ();

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

node = node. getNextSibling ();

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

node = node. getFirstChild ();

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

node = node. getNextSibling ();

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

}

}

Liste 2: Traversering af DOM-træet

import org. W3C. dom. Knude;

import org. W3C. dom. NamedNodeMap;

klasse MyTreeTraverser

{

Node node;

MyTreeTraverser (Node node)

{

dette. node = node;

displayName ();

displayValue ();

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

displayAttributes ();

System. ud. println ();

displayChildren ();

}

void displayName ()

{

System. ud. Print navn: ");

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

}

void displayValue ()

{

String nodeValue = knudepunkt. getNodeValue ();

hvis (nodeValue! = Null)

nodeValue = nodeValue. trimme();

System. ud. print ("værdi:");

System. ud. println (nodeValue);

}

void displayAttributes ()

{

NamedNodeMap attribs = node. getAttributes ();

for (int i = 0; i

{

System. ud. println ();

System. ud. print ("Attribut:");

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

System. ud. udskrive ("=");

System. ud. 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 meget mere generel. Denne kode kontrollerer dokumentstrukturen, når den kører. Når koden finder en barneknude, scanner den barnet og søger børnebørn. Hvis der ikke er børnebørn, søger koden efter brødre og søstre. Koden kan håndtere ethvert dokumenttræ - om det har en node eller tusind noder.

Listing 2 er således mere alsidig end Listing 1. Men denne alsidighed kommer med ulemper - herunder muligheden for meget høj overhead. Koden i Listing 2 skal analysere hele XML-dokumentet - og derefter sætte en repræsentation af dokumentets træ i computerens hukommelse. Hvis dokumentet er meget stort, er repræsentationen stor: Hukommelsen bliver oppustet med alle de midlertidige data, og koden i liste 2 bremses til en gennemgang.

Fordelene ved tilpasning

Forestil dig at du kører til Faneuil Hall i Boston, Massachusetts. Det er ligegyldigt hvor du starter fra; turen vil altid være forvirrende og vanskelig. Alligevel skal du planlægge din rute. Du kan gå vild i nærliggende Revere eller Cambridge eller i downtown Boston. Afhængigt af dine ressourcer har du to muligheder:

  • Du kan stoppe ved en tankstation og købe et kort. Hvis du gør det, kan du aldrig komme til Faneuil Hall. Når alt kommer til alt, skal du finde, hvor du er på kortet, se efter alternative ruter, vælg en rute, og derefter (himlen hjælper dig) forsøger at følge ruten uden at gå tabt igen.
  • Du kan fortælle dit dyre, snakende GPS-system, som du vil komme til Faneuil Hall. Systemet vil tegne en tilpasset rute og lede dig, vende for tur fra det uhyggelige sted du befinder dig i den optimale rute, der fører derfra til Faneuil Hall. Ruten er så tilpasset, at GPS-stemmen siger (for eksempel), "Der er ingen tegn på dette skæringspunkt, men sving til venstre alligevel. "Senere siger stemmen" Der er to tegn på dette skæringspunkt, og tegnene er i modstrid med hinanden. Men drej til højre alligevel. "

Brug af papirkortet tager mere arbejde (mere tid, indsats, fingerfærdighed og tålmodighed) end at bruge den talende GPS. Hvorfor? Fordi papirkortet ikke er tilpasset dine specifikke behov I virkeligheden står det: "Her er hele Boston hovedstadsområde. Faneuil Hall er derinde et sted. Du finde ud af, hvad du skal gøre næste gang. "

Et tilpasset system er (som du måske forventer) nemmere at bruge end et, der ikke er skræddersyet til din umiddelbare situation. XML-behandlingskoden til Listing 2 gør således et stort ressourcegulpende DOM-træ i din computers hukommelsesrum ("Her er træet - du find ud af hvad du skal gøre næste …"), fordi koden ikke er ' t tilpasset.Koden fungerer for ethvert gammelt dokument - ikke kun det du har ved hånden - og gobbler altid ressourcer til at gøre det.

Essensen af ​​JAXB

Tanken bag JAXB er at skabe skræddersyet klasse for at imødekomme dine nuværende behov. Du tager beskrivelsen af ​​et XML-dokument, kører det gennem et særligt program kaldet en skema compiler , og får en helt ny klasse kaldet genereret klasse . Denne genererede klasse er strømlinet til at arbejde med bestemte XML-dokumenter.

Hvis dine XML-dokumenter f.eks. Har elementer, der hedder Total, kan den genererede klasse have setTotal og getTotal-metoder. Hvis et dokuments element har en fullName-attribut, kan den genererede klasse have setFullName og getFullName-metoder. (Se figur 1).

Forbindelsen mellem en del af et XML-dokument og en del af en Java-klasse kaldes en bindende . Med alle disse bindinger repræsenterer en forekomst af klassen et enkelt XML-dokument.

Figur 1: Et objekt repræsenterer et dokument.

Så hvordan forbinder du et objekt med et XML-dokument? Nå, den genererede klasse har metoder, der hedder umenneskelige og marskalsk. (Se figur 2).

  • Den ualmindelige metode læser en XML-fil. Metoden får værdier fra XML-dokumentet og tildeler disse værdier til variabler i Java-objektet.
  • Marshalmetoden skriver en XML-fil. Metoden får værdier fra Java-objektet, og bruger disse værdier til at oprette XML-dokumentet.

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

Figur 2: Læse og skrive værdier.

Bygning Brugerdefineret kode med Java API til XML-binding (JAXB) - dummies

Valg af editor

Fuld redigeringsfunktion i Photoshop Elements 10 - dummies

Fuld redigeringsfunktion i Photoshop Elements 10 - dummies

Fuld fotoredigeringsfunktion tilbyder bundter af værktøjer, som du kan bruge at redigere dine billeder, fra korrektionsværktøjer til fastsættelse af farve og klarhed til filtre, lag og meget mere for at ændre eksisterende fotos eller skabe helt originale billeder fra bunden. Men alle disse værktøjer gør også Komplet fotoredigeringstilstand kompleks. Du kan flytte ind i ...

Generelle blandingsformer i Photoshop Elements - dummies

Generelle blandingsformer i Photoshop Elements - dummies

Elementer spænder over 25 blandingstilstande. Blend modes påvirker hvordan farver interagerer mellem lag og også hvordan farver interagerer, når du anvender maling på et lag. Ikke alene gør blandingstilstande interessante effekter, men du kan også nemt anvende, redigere eller fjerne blandingsfunktioner uden at røre dine billedpixel. De forskellige blandingstilstande ...

Geometriske formindstillinger i Photoshop Elements - dummies

Geometriske formindstillinger i Photoshop Elements - dummies

Geometriindstillinger hjælpe med at definere, hvordan dine figurer ser ud. Klik på nedpegepilen i værktøjsindstillingerne i Elements for at få adgang til de geometriske indstillinger, der beskrives i det følgende. Rektangulære og afrundede rektangel geometriske indstillinger Her er geometriske indstillinger for rektangel og afrundede rektangelformer: Ubegrænset: Giver dig mulighed for at få fri tøj til at tegne en ...

Valg af editor

Sådan bygger du tabeller i HTML5 - dummies

Sådan bygger du tabeller i HTML5 - dummies

Sommetider indeholder din webside data bedst fremlagt i et bord . Du kan bruge HTML5's komplette bordsystem til at oprette tabeller som den i dette eksempel: Den grundlæggende struktur i et bord i HTML-format er rimeligt let at forstå; Tjek koden, der oprettede tabellen i eksemplet:

Hvordan man ændrer gentagne baggrunde på CSS3-steder - dummier

Hvordan man ændrer gentagne baggrunde på CSS3-steder - dummier

Der er situationer, hvor man kun vil en enkelt kopi af et baggrundsbillede på dit CSS3-websted. Det kan være, at billedet du har brugt er noget, der ikke gentager sig godt eller er stort nok til, at du virkelig ikke vil have det gentaget. Følgende procedure viser en teknik, du kan bruge til at fortælle ...

Hvordan man opbygger en webside skabelon fra scratch-dummies

Hvordan man opbygger en webside skabelon fra scratch-dummies

Standardværktøjet på tværs af digitalt agenturer og interne afdelinger til opbygning af website grafik er Adobe Photoshop. Selvom fyrværkeri er optimeret og målrettet til at producere web-grafiske kildefiler, er det bare ikke fanget, sandsynligvis på grund af den massive genoplæringsindsats ville det medføre, at hele afdelinger gør omskifteren. At oprette et nyt ...

Valg af editor

Sådan godkendes medlemmer til din LinkedIn Group - dummier

Sådan godkendes medlemmer til din LinkedIn Group - dummier

Som flere og flere mennesker finder ud af din ny LinkedIn-gruppe, og som medlemmer begynder at deltage, kan du opleve, at nogle af de personer, der har klikket på linket for at deltage, ikke er på din forhåndsgodkendte liste. Måske er de mennesker, du ikke har forstået var på LinkedIn, eller du var ikke klar over, at de var gyldige grupper ...

Hvordan man tilføjer billeder til kroppen i din LinkedIn-profil til Visual Social Marketing - dummies

Hvordan man tilføjer billeder til kroppen i din LinkedIn-profil til Visual Social Marketing - dummies

Ud over et profilbillede giver LinkedIn brugere mulighed for at forbedre de visuelle sociale markedsføringselementer i deres profiler ved at tilføje billeder til deres profilprofil. Du kan tilføje billeder til ethvert afsnit i din LinkedIn-profil. Tilføjelse af billeder til din profil kan hjælpe dig med at fortælle din historie visuelt og ...

Sådan tilføjer du en virksomhedsside til LinkedIn - dummies

Sådan tilføjer du en virksomhedsside til LinkedIn - dummies

, Når du har opfyldt kravene til oprettelse en virksomhedsside på LinkedIn, er det tid til at komme i gang ved at tilføje selskabets side til Linkedins system. For at oprette din virksomhedsside skal du blot følge disse trin: