API Java pentru procesare XML
Java API pentru XML Processing , sau JAXP , este unul dintre Java - XML - API - uri . Este un API standardizat ușor pentru validarea , analizarea , generarea și transformarea documentelor XML. Implementarea respectivă (nestandardizată) a API-ului este interschimbabilă (conectabilă). Cele patru interfețe de bază sunt:
- Document Object Model interfata interpretor sau DOM interfață
- simplu API pentru XML interfață analizator sau SAX interfață
- API Streaming pentru XML sau stax interfață (adăugat în JDK 6, disponibil separat , ca și Jar pentru JDK 5)
- XSLT interfață pentru a permite transformări asupra datelor și structurile unui document XML.
J2SE 1.4 JDK a fost prima versiune JDK care a fost publicată cu o implementare a JAXP 1.1; actualul JSE este furnizat cu Apache Xerces și o variantă adaptată de Xalan (pentru XSLT).
Versionarea
| Versiunea Java SE | a inclus versiunea JAXP |
|---|---|
| 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 |
Interfață DOM
Interfața DOM are o structură foarte simplă. Analizează un întreg document XML și creează o reprezentare completă "în memorie" a documentului. Acesta folosește clasele și conceptele specificației care pot fi vizualizate în Documentul Model de obiect document (DOM) Level 2 Core Specification.
Analizatorul DOM se numește DocumentBuilder deoarece oferă o reprezentare a documentului în memorie. O instanță a clasei javax.xml.parsers.DocumentBuilder este creată de clasa Factory javax.xml.parsers.DocumentBuilderFactory . DocumentBuilder creează mai întâi o instanță org.w3c.dom.Document sub forma unei structuri de copac care conține nodurile din documentul XML. Fiecare nod arbore din această structură implementează interfața org.w3c.dom.Node . Există multe tipuri diferite de noduri de arbore care reprezintă tipurile de date respective din documentul XML.
Cele mai importante noduri sunt:
- Noduri de element, eventual cu atribute
- Noduri de text care reflectă textul găsit între etichetele de început și de sfârșit ale unui element de document
Pentru o listă completă a tipurilor de noduri, consultați documentația javadoc a pachetului org.w3c.dom .
Cu DOM-API puteți lucra „în ambele direcții”, adică de la XML la „în memorie” DOM, precum și de la DOM la XML. Prin urmare, este potrivit nu numai pentru „analizarea” XML, ci și pentru generarea XML (fluxuri sau fișiere).
Interfață SAX
Analizorul SAX, numit și SAXParser, este creat de javax.xml.parsers.SAXParserFactory . Spre deosebire de parserul DOM, SAXParser nu creează o reprezentare „în memorie” a unui document XML, ceea ce îl face, prin urmare, mai rapid și mai puțin solicitant în ceea ce privește consumul de memorie. În schimb, SAXParser informează clientul cu privire la structura documentului XML prin funcții de apel invers , i. Cu alte cuvinte, sunt executate metodele instanței DefaultHandler disponibile pentru parser.
Clasa DefaultHandler se află în pachetul org.xml.sax.helpers . Aceasta implementează ContentHandler, ErrorHandler, DTDHandler și interfața EntityResolver. Majoritatea clienților sunt interesați de metodele din interfața ContentHandler.
Metodele ContentHandler, implementate de DefaultHandler, sunt apelate de îndată ce parserul SAX întâlnește elementele corespunzătoare ale documentului XML. Principalele metode din această interfață sunt:
- a startDocument () și endDocument () metode, care sunt numite pe etichetele de început și sfârșit ale unui document XML.
- a startElement () și endElement () metode, care sunt numite pe început și de sfârșit Tag - un document elementului .
- metoda personajelor () . Aceasta se numește cu conținutul dintre etichetele de început și de sfârșit ale respectivului element de document XML.
Clientul oferă o subclasă a DefaultHandler , care suprascrie aceste metode și procesează datele. Aceasta poate include, de asemenea, stocarea datelor într-o bază de date sau scrierea într-un flux .
Cu SAX-API puteți lucra „numai într-o singură direcție”, și anume din XML „în„ Java. Prin urmare, este potrivit doar pentru „analizarea” XML. Cu SAX nu puteți crea XML (fluxuri sau fișiere).
Interfață XMLPULL
API-ul Streaming pentru XML (StAX) face parte din JAXP de la JAXP 1.2 și, prin urmare, JSE 6 și J2EE 1.4 . Aceasta este utilizată pentru a citi date XML utilizând așa-numitul parser XMLPULL. XMLPULL este similar cu SAX, cu excepția faptului că analizorul nu trimite informații către aplicație printr-un mecanism de eveniment ( „PUSH” ), așa cum este cazul cu SAX , dar aplicația primește singură următoarea informație atunci când are nevoie de ea („ PULL ”) ). Analizatorii XMLPULL sunt de obicei mai eficienți decât analizatorii SAX.
Interfață XSLT
E x tensible S tylesheet L anguage pentru T ransformations, prescurtat XSLT , conversia permite unui document XML la alte forme de date.
Validare XSD
Validarea fișierelor XSD este acceptată din JAXP 1.2. JAXP 1.2 face parte din platforma Java de la JSE 6.0 și J2EE 1.4.
Dovezi individuale
- ↑ https://www.jcp.org/en/jsr/detail?id=206
- ↑ http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113
Link-uri web
- Descrierea produsului Oracle JAXP
- Program de exemplu folosind parserul DOM și parserul SAX Tutorial: XML cu Xerces pentru Java