Huis Persoonlijke financiën XML-gebeurtenissen parseren met SAX - dummies

XML-gebeurtenissen parseren met SAX - dummies

Inhoudsopgave:

Video: Какой сегодня праздник на календаре 12 июля 2019 года 2024

Video: Какой сегодня праздник на календаре 12 июля 2019 года 2024
Anonim

Het woord evenement roept allerlei soorten afbeeldingen op. Voor een niet-programmeur is een evenement gewoon 'iets dat gebeurt'. "Als je gewend bent om met windows en frames in Java om te gaan, dan denk je waarschijnlijk aan een gebeurtenis als een gebeurtenis die een stukje code wakker maakt. Bijvoorbeeld, de muisklik of toetsaanslag van een gebruiker activeert de code die een optie instelt en geeft een OK-vak weer. De klik of toetsaanslag zelf wordt een -gebeurtenis genoemd, omdat deze onafhankelijk van het actieve programma gebeurt. Alleen de gebruiker weet wanneer hij of zij op die knop drukt. En wanneer de knop wordt ingedrukt, wordt een deel van het Java-programma net wakker en behandelt het de situatie. Dit scenario wordt gebeurtenisgestuurd programmeren genoemd.

Gebeurtenisgestuurde programmering

SAX-programma's zijn door gebeurtenissen aangedreven . U stapt bijvoorbeeld in bed voor een goede nachtrust. Je reikt je hand uit om je wekker in te stellen en je dan te settelen, je ogen te sluiten en een aantal uren bewusteloos te raken. Dan gebeurt er een belangrijke gebeurtenis: een bepaald tijdstip komt aan. Wanneer de gebeurtenis plaatsvindt, gaat de wekker in zijn "ontwaak" -modus - en maakt een verschrikkelijk lawaai om u uit uw rustgevende slaap te beroven.

Dit is een ander scenario. Je bent een drukke manager en je bent een paar uur onderweg, maar je wilt geen belangrijke zaken missen. Voordat je het kantoor verlaat, zeg je tegen je assistent: "Bel me als er iets belangrijks komt. "Het afgeven van deze bestelling is vergelijkbaar met het instellen van de wekker. U vertelt uw assistent (uw wekker) om u wakker te maken als een evenement plaatsvindt. Als u dit verzoek aan uw assistent (of aan uw alarmklok) doet, wordt dit registratie genoemd. In beide scenario's registreer je jezelf met een wekservice. Nadat je je hebt geregistreerd, kun je je ontspannen non-activiteit voortzetten en alle echte zaken negeren tot er iets gebeurt. Dan …

Bel, bel. Je mobiele telefoon schreeuwt je uit. "Hallo? “

“Hello. Dit is je assistent. Ik heb de verkoopcijfers voor het eerste kwartaal. Ze zijn 1 miljoen, 4 miljoen en 2 miljoen. "

" Eens kijken. Dat is een totaal van 7 miljoen, "zegt u. "Ik zal het op mijn PalmPilot noteren. Bedankt. "Je hangt op.

Enkele momenten later krijg je een nieuwe oproep. "De president van Big Bucks, Inc. wil die deal sluiten. Ze hebben het over 10 miljoen dollar. “

"Hmm", je reageert. "Dat levert onze jaaromzet op tot 17 megabucks. Ik zal die informatie opslaan in mijn spreadsheetapplicatie. Bedankt voor het bellen. "

Elk van deze interacties staat bekend als een callback .Eerder op de dag, toen u uw wens bij de assistent registreerde, vroeg u om een ​​terugroepactie. Vervolgens maakt de assistent, telkens wanneer een gebeurtenis plaatsvindt, een terugroepactie om u op de hoogte te stellen van de gebeurtenis. In Java-programmeertermen roept de assistent een van uw vele methoden aan (een van uw Java-subprogramma's).

De essentie van gebeurtenisgestuurde programmering

Gebeurtenisgestuurd programmeren bestaat uit drie delen:

  • Registratie: U registreert uw wens om op de hoogte te worden gesteld wanneer zich een gebeurtenis voordoet. Je registreert deze wens met een ander stuk code - een ander object, meestal iets dat je hebt geïmporteerd (zoals een stuk code dat deel uitmaakt van de API van iemand anders). Dit object kijkt vervolgens van achter de schermen naar het optreden van de door u opgegeven gebeurtenis.
  • Gebeurtenis optreden: Er gebeurt een specifieke gebeurtenis.
  • Terugbellen: Het andere stuk code voert een callback uit. Een van je methoden wordt gebeld.

Twee soorten code

Het onderscheid tussen actieve -code en passieve -code is nuttig:

  • Actieve code heeft een hoofdmethode. Actieve code, zodra deze wordt gestart, staat centraal. Actieve code bevat de thread van uitvoering die het hele balspel bestuurt.
  • Passieve code zit daar gewoon in de aanslag om te worden gebeld. Een passieve Dice-klasse doet niets totdat een andere code Dice noemt. rollen().

Nu, je zou kunnen denken dat passieve code alles is wat je nodig hebt voor door gebeurtenissen gestuurde programmering, maar dat is het niet. Voor het afhandelen van gebeurtenissen hebt u deze registratiestap nodig. De passieve code begint met het registreren van een ander stuk code.

Om een ​​beter beeld te krijgen van de registratie, moet u denken aan een voorbeeld uit de wereld van muizen, vensters en knoppen op het scherm. U maakt een venster of kader. U wilt dat uw kader reageert op muisklikken, dus geeft u de volgende opdracht:

-knop. addMouseListener (deze);

Dit commando registreert uw frame met de knop. Het commando zegt, in feite, Wanneer een muisgebeurtenis plaatsvindt, bel dan een van de muisverwerkingsmethoden van het frame. Later, wanneer de gebruiker met de muis klikt, krijgt het frame een callback. De computer roept de mouseClicked-methode van het frame aan.

SAX-gebeurtenissen

Natuurlijk, SAX is door gebeurtenissen aangestuurd, maar dit betekent niet dat een SAX-programma wacht op muisklikken. In plaats daarvan volgt de SAX-code het register-gebeurtenis-terugroepmodel dat in de laatste paar alinea's is beschreven. Elk SAX-programma heeft twee onmisbare stukjes code:

  • Een stuk code dat u schrijft - de -handler . (Uw handler kan een vooraf geschreven DefaultHandler-klasse uitbreiden.)
  • De handler is vergelijkbaar met de miljoen-dollar-beheerder in het voorgaande gedeelte.
  • Een stuk code dat u normaal niet schrijft - de parser . De parser speelt een rol zoals die van de assistent van de executive. De Java 1. 4 API heeft een ingebouwde parser. U maakt een instantie van deze parser en vervolgens registreert u uw handler met die parserinstantie. In feite vertel je de instantie om je handler terug te bellen wanneer een evenement plaatsvindt.

Alles wat te maken heeft met XML is nieuw en is nog steeds in beweging. Om deze reden is de terminologie op een aantal bijzondere manieren samen gepatched. Bij de ontwikkeling van SAX versie 2 hadden sommige techneuten een make-up-new-names festival. Wat gewoonlijk een "parser" wordt genoemd, is belichaamd in een Java-interface met de naam XMLReader. Er was een klasse met de naam org. xml. sax. Parser, maar de klas heeft verouderd (wat betekent dat je het van de onderkant van je schoen moet schrapen). Om het een beetje ingewikkelder te maken, is er nog een andere ontledingstool, javax. xml. parsers. SAXParser. U gebruikt deze SAXParser om uzelf een XMLReader te maken. Met een beetje geluk raak je snel gewend aan deze ingewikkelde terminologie. Voor nu, onthoud dat wat een "parser" wordt genoemd, meestal een exemplaar van XMLReader is.

Het register-en-callback-scenario maakt SAX event-driven. Het grappige is dat een SAX-evenement niet voelbaar is. Een SAX-evenement herinnert u niet aan een toetsaanslag of een knopklik. In SAX scant de parser een XML-document van boven naar beneden. Wanneer de parser iets interessants tegenkomt, vuurt de parser een gebeurtenis af en roept de handler. Dan is het aan de handler om iets aan deze interessante ontmoeting te doen.

XML-gebeurtenissen parseren met SAX - dummies

Bewerkers keuze

Hoe u Flash-video maakt en codeert - dummies

Hoe u Flash-video maakt en codeert - dummies

Als de pagina's die u maakt, zijn gewonnen ' t kan worden bekeken op mobiele apparaten (zoals een iPad of een smartphone), kunt u webpagina's maken met prachtige Flash-video. Adobe Flash Professional CS6 heeft een eigen ingebouwde video-encoder. Full-motionvideo in Flash is iets heel moois. U past de video aan voor het bekijken door de doelgroep ...

Hoe een aanpasbare interface te maken in CSS3 - dummies

Hoe een aanpasbare interface te maken in CSS3 - dummies

De grote variëteit en soorten schermen gebruikt om informatie weer te geven, maakt het nodig dat uw CSS3-commando's de gebruiker toestaan ​​om het formaat van de elementen naar wens aan te passen. In de meeste gevallen kunt u de gebruiker eenvoudig toestaan ​​om het element op elke gewenste grootte te maken. Er kunnen zich echter situaties voordoen waarin u de grootte van de grootte moet controleren ...

Hoe u een eenvoudige tabel op uw webpagina maakt - dummies

Hoe u een eenvoudige tabel op uw webpagina maakt - dummies

Tabellen laten u organiseer informatie op uw webpagina en geef het een georganiseerde uitstraling die uw bezoekers nuttig zullen vinden. Bij gebruik zoals bedoeld, hebben tabellen rijen en kolommen. Voor elke spot waar een rij en kolom elkaar kruisen, hebt u een tabelcel. Elke cel kan zijn eigen opmaak hebben: de gegevens erin ...

Bewerkers keuze

Hoe Postproduction Shareninging Filters werken - dummies

Hoe Postproduction Shareninging Filters werken - dummies

Verscherpingsfilters werken in postproductie door de randen (of aangrenzende gebieden met tonaal contrast) te benadrukken aan elkaar) in een afbeelding. Ze creëren een fijne highlight aan de donkere kant van de rand en een piepklein lowlight aan de lichtere kant van de rand. Dit toegevoegde contrast zorgt ervoor dat de randen er scherper uitzien vanaf een ...

HDR Work-Flow voor foto's met één belichting - dummies

HDR Work-Flow voor foto's met één belichting - dummies

In grote lijnen, enkele belichting hoog dynamisch bereik volgt dezelfde workflow als HDR-fotografie tussen haakjes. Er kunnen kleine verschillen zijn, dus hier is een overzicht van de werkstroom: configureer uw camera voor single-shot HDR. Het enige dat u zoekt, is de beste foto die u kunt maken. Besteed aandacht aan de lichtomstandigheden, het onderwerp, beweging en ...

Geavanceerde compacte en superzoomcamera's voor HDR-fotografie - dummies

Geavanceerde compacte en superzoomcamera's voor HDR-fotografie - dummies

Stap omhoog van compacte digitale camera's binnen het budgetbereik, vindt u duurdere compacte digitale camera's voor HDR-fotografie, ook wel high-end compacts, superzoomlenzen en dSLR-look-alikes genoemd. Er zijn zoveel vaak overlappende categorieën dat het je hoofd laat draaien. De twee dingen die deze reeks camera's gemeen hebben, zijn hun ...

Bewerkers keuze

In te schakelen Class Tracking in QuickBooks 2013 - dummies

In te schakelen Class Tracking in QuickBooks 2013 - dummies

Om activity-based costing te gebruiken (ABC ) in QuickBooks 2013 moet u de QuickBooks Class Tracking-functie inschakelen. Met Class Tracking kunt u inkomsten- en onkostentransacties categoriseren als niet alleen vallen in inkomsten- en uitgavenrekeningen, maar ook als vallen in bepaalde klassen. Volg deze stappen om Class Tracking in QuickBooks in te schakelen: Kies Bewerken → Voorkeuren ...

Gebruikt om een ​​exemplaar van een QuickBooks-gegevensbestand te gebruiken - dummies

Gebruikt om een ​​exemplaar van een QuickBooks-gegevensbestand te gebruiken - dummies

Ongeacht of de client verzendt handmatig een accountantskopie van een QuickBooks-gegevensbestand, e-mails een accountantsexemplaar, of verzendt een accountantskopie via de Intuit-bestandsoverdrachtservice, u gebruikt de kopie van de accountant door Bestand → Verzend bedrijfsdossier → Accountantskopie → Open & converteer overzetten te kiezen Bestand commando. Wanneer u deze opdracht kiest, geeft QuickBooks een ...

Hoe Audit Trails te gebruiken in QuickBooks - dummies

Hoe Audit Trails te gebruiken in QuickBooks - dummies

Als u besluit om meerdere gebruikers toegang te geven tot de QuickBooks-gegevens bestand, zult u de QuickBooks Audit Trail-functie waarderen, die bijhoudt wie welke wijzigingen aan het QuickBooks-gegevensbestand aanbrengt. U kunt transacties niet verwijderen uit de lijst of geschiedenis van de audittrail, behalve door gegevens te archiveren en te condenseren. Audit trail inschakelen ...