Java API for XML-behandling
Den Java API for XML Processing , eller JAXP , er en av Java - XML - APIer . Det er en lett standardisert API for validering , parsing , generering og transformering av XML-dokumenter. Den respektive (ikke-standardiserte) implementeringen av API er utskiftbar (pluggbar). De fire grunnleggende grensesnittene er:
- den Document Object Model parser grensesnitt eller DOM grensesnitt
- den Simple API for XML -parser grensesnitt eller SAX -grensesnitt
- den Streaming API for XML eller Stax grensesnitt (tilsatt i JDK 6, leveres separat som Jar for JDK 5)
- den XSLT grensesnitt for å aktivere transformasjoner på data og strukturer av et XML-dokument.
J2SE 1.4 JDK var den første JDK- versjonen som ble publisert med en implementering av JAXP 1.1; den nåværende JSE leveres med Apache Xerces og en tilpasset variant av Xalan (for XSLT).
Versjonering
| Java SE- versjon | inkludert JAXP-versjon |
|---|---|
| 1.4 | 1.1 |
| 1.5 | 1.3 |
| 1.6 | 1.4 |
| 1.7.0 | 1.4.5 |
| 1.7.40 | 1.5 |
| 1.8 | 1.6 |
DOM-grensesnitt
DOM-grensesnittet har en veldig enkel struktur. Den analyserer et helt XML-dokument og lager en fullstendig "i minne" -representasjon av dokumentet. Den bruker klassene og konseptene i spesifikasjonen som kan sees under Document Object Model (DOM) Level 2 Core Specification.
DOM-parseren kalles DocumentBuilder fordi den gir en dokumentrepresentasjon i minnet. En forekomst av klassen javax.xml.parsers.DocumentBuilder er opprettet av klassen Factory javax.xml.parsers.DocumentBuilderFactory . DocumentBuilder oppretter først en org.w3c.dom.Document- forekomst i form av en trestruktur som inneholder nodene i XML-dokumentet. Hver treknute i denne strukturen implementerer org.w3c.dom.Node- grensesnittet. Det er mange forskjellige typer treknuter som representerer de respektive datatypene fra XML-dokumentet.
De viktigste nodene er:
- Elementnoder, muligens med attributter
- Tekstnoder som gjenspeiler teksten som er funnet mellom start- og sluttkodene til et dokumentelement
For en komplett liste over nodetyper, se javadoc- dokumentasjonen til org.w3c.dom- pakken .
Med DOM-API kan du jobbe 'i begge retninger', dvs. fra XML til "i minne" DOM så vel som fra DOM til XML. Det er derfor ikke bare egnet for å "parsere" XML, men også for å generere XML (streams eller filer).
SAX-grensesnitt
SAX-parseren, også kalt SAXParser, er opprettet av javax.xml.parsers.SAXParserFactory . I motsetning til DOM-parseren lager ikke SAXParser en "in-memory" -representasjon av et XML-dokument, noe som følgelig gjør det raskere og mindre krevende når det gjelder minneforbruk. I motsetning til dette informerer SAXParser klienten om XML-dokumentstrukturen gjennom tilbakeringingsfunksjoner , dvs. Med andre ord utføres metoder for DefaultHandler-forekomsten som er tilgjengelig for parseren.
StandardHandler-klassen er i org.xml.sax.helpers- pakken . Dette implementerer ContentHandler, ErrorHandler, DTDHandler og EntityResolver-grensesnittet. De fleste klienter er interessert i metodene fra ContentHandler-grensesnittet.
ContentHandler-metodene, implementert av DefaultHandler, blir kalt så snart SAX-parseren møter de tilsvarende elementene i XML-dokumentet. De viktigste metodene i dette grensesnittet er:
- de startdokumentet () og endDocument () metoder, som kalles på start- og sluttkoder av et XML-dokument.
- de startElement () og endElement () metoder, som de nevnte på start- og sluttkoder av et dokument element .
- de tegn () metoden. Dette kalles med innholdet mellom start- og sluttkodene til det respektive XML-dokumentelementet.
Klienten tilbyr en underklasse av DefaultHandler , som overskriver disse metodene og behandler dataene. Dette kan også omfatte lagring av data i en database eller skriving til en strøm .
Med SAX-API kan du jobbe 'bare i en retning', nemlig fra XML 'til' Java. Det er derfor bare egnet for å "parsere" XML. Med SAX kan du ikke opprette XML (strømmer eller filer).
XMLPULL-grensesnitt
Streaming API for XML (StAX) har vært en del av JAXP siden JAXP 1.2 og dermed JSE 6 og J2EE 1.4 . Denne brukes til å lese XML-data ved hjelp av en såkalt XMLPULL-parser. XMLPULL ligner på SAX, bortsett fra at parseren ikke sender informasjon til applikasjonen via en hendelsesmekanisme ( "PUSH" ), slik tilfellet er med SAX , men applikasjonen får den neste informasjonen selv når den trenger den (" PULL " ). XMLPULL-parsere er vanligvis mer effektive enn SAX-parsers.
XSLT-grensesnitt
Den x strekkbare S tylesheet L anguage for T ransformations, forkortet XSLT , gjør konverteringen et XML-dokument til andre former for data.
XSD-validering
Validering av XSD- filer støttes fra JAXP 1.2. JAXP 1.2 er en del av Java-plattformen fra JSE 6.0 og J2EE 1.4.
Individuelle bevis
- ↑ https://www.jcp.org/en/jsr/detail?id=206
- ↑ http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113
weblenker
- Oracle's JAXP produktbeskrivelse
- Eksempel på program som bruker DOM-parseren og SAX- parserveiledningen: XML med Xerces for Java