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 2025

Video: Week 9 2025
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

Hvordan man skriver en check for en fremragende bill i QuickBooks Online - dummies

Hvordan man skriver en check for en fremragende bill i QuickBooks Online - dummies

Du kan Brug QuickBooks Online (QBO) Check vinduet til at skrive en check for at betale et faktura, du tidligere indtastede - noget, du ikke kan gøre i QuickBooks desktop produkt. Brug ikke Check-transaktionen, hvis du planlægger at betale flere regninger. Hvis du vælger en betalingsmodtager, for hvem der foreligger en udestående faktura, QBO ...

Sådan afskrives fakturaer med QuickBooks Online Accountant - dummies

Sådan afskrives fakturaer med QuickBooks Online Accountant - dummies

Vælger skrivefakturaer fra revisionsværktøjerne menuen i QBOA viser siden Skriv ud fakturaer, som giver dig mulighed for at se fakturaer, du måske vil afskrive, og derefter skrive dem til en konto efter eget valg. Øverst på siden indstiller du filtre for at få vist de fakturaer, du vil have ...

Importrevisorens ændringer til QuickBooks 2012 Datafil - dummies

Importrevisorens ændringer til QuickBooks 2012 Datafil - dummies

Din klient importerer de ændringer, som du ' har lavet i revisorens kopi af QuickBooks 2012-datafilen i hendes arbejdskopi af datafilen. For at gøre dette vælger klienten filen Arkiv → Revisorens Kopi → Klientaktiviteter → Kommandoen Import Revisorens Ændringer. QuickBooks viser dialogboksen Importer regnskabsførerens ændringer. For at bruge importkontoens ændringer ...

Valg af editor

Brug Flash med Nature Photography - dummies

Brug Flash med Nature Photography - dummies

Som regel afhænger du af naturlig belysning til naturfotografering. Du kan dog bruge flash-flash eller en ekstra flash-enhed til at øge naturlig belysning. On-flash-kamera De fleste digitale kameraer leveres med en flash på kameraet. Blitzenheden springer op, når det er nødvendigt. Du kan også aktivere flash på kameraet, når du skal tilføje en ...

Brug tredjeparts rå software til HDR fotografi - dummies

Brug tredjeparts rå software til HDR fotografi - dummies

Du kan købe eller downloade et væld af Råredigerere og konvertere fra tredjepart, der hjælper dig med at lave billeder med høj dynamisk rækkevidde. Hvis du er utilfreds med din nuværende software og vil prøve noget nyt, skal du hænde på en eller flere af de programmer, der er angivet i tabellen. Rå redaktører fra tredjepart Navn URL Platform (er) Freeware? ...

Brug dekorative accenter i mad stil og madfotografi - dummies

Brug dekorative accenter i mad stil og madfotografi - dummies

Når fødevaren alene ikke skaber Det drama eller den intrigue, du vil have i din fotografering med dekorative accenter - af farve, form eller tekstur - kan give dine billeder den ekstra effekt, du leder efter. Accenter er forbedringer af fødevarematerialet, og selvom de tjener formålet med at ophæve maden, er de ...

Valg af editor

Sådan finder du formatering i Word 2007 - dummies

Sådan finder du formatering i Word 2007 - dummies

Du kan bruge kommandoen Find til at skure dit Word 2007-dokument til formatering af oplysninger. Hvis du f.eks. Kun vil finde de forekomster af ordet, der ligger i fed skrift, kan du gøre det. Dette eksempel søger efter teksten gåseæg med en skriftstørrelse på 24 point i en ...

Hvordan man finder tekst i Word 2016 - dummies

Hvordan man finder tekst i Word 2016 - dummies

Ikke gider med båndet! For at finde tekst i dit Word 2016-dokument, tryk Ctrl + F, den mindeværdige tastaturgenvej til kommandoen Find. Du ser navigationsruden, svarende til hvad der vises her. Navigationsruden. Skriv den tekst, du vil lokalisere, i feltet Søg dokument. Når du skriver forekomster af teksten ...

Hvordan man finder stilarter i Word 2016 - dummies

Hvordan man finder stilarter i Word 2016 - dummies

Stilarter bor på Word 2016 Home-fanen navngivet Styles-gruppe, som vist her. Hvad du ser på båndet er Style Gallery, som kan udvides til en fuld menu med stilvalg. Hvor Word-stilarter lurer. Klik på dialogboksen launcher i det nederste højre hjørne af Styles-gruppen ...