API Java para processamento XML
A API Java para processamento de XML , ou JAXP , é um dos Java - XML - APIs . É uma API padronizada leve para validar , analisar , gerar e transformar documentos XML. A respectiva implementação (não padronizada) da API é intercambiável (conectável). As quatro interfaces básicas são:
- a interface do analisador Document Object Model ou a interface DOM
- o Simple API para XML interface de analisador ou SAX Interface
- a API de streaming para XML ou interface StAX (adicionada no JDK 6; disponível separadamente como Jar para JDK 5)
- a interface XSLT para permitir transformações nos dados e estruturas de um documento XML.
O J2SE 1.4 JDK foi a primeira versão do JDK publicada com uma implementação do JAXP 1.1; o JSE atual é fornecido com o Apache Xerces e uma variante adaptada do Xalan (para XSLT).
Controle de versão
| Versão Java SE | versão JAXP incluída |
|---|---|
| 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 |
Interface DOM
A interface DOM possui uma estrutura muito simples. Ele analisa um documento XML inteiro e cria uma representação completa "na memória" do documento. Ele usa as classes e os conceitos da especificação que podem ser visualizados em Document Object Model (DOM) Nível 2 Core Specification.
O analisador DOM é denominado DocumentBuilder porque fornece uma representação de documento na memória. Uma instância da classe javax.xml.parsers.DocumentBuilder é criada pela classe Factory javax.xml.parsers.DocumentBuilderFactory . O DocumentBuilder primeiro cria uma instância org.w3c.dom.Document na forma de uma estrutura de árvore que contém os nós no documento XML. Cada nó da árvore nesta estrutura implementa a interface org.w3c.dom.Node . Existem muitos tipos diferentes de nós de árvore que representam os respectivos tipos de dados do documento XML.
Os nós mais importantes são:
- Nós de elemento, possivelmente com atributos
- Nós de texto que refletem o texto encontrado entre as marcas de início e fim de um elemento de documento
Para uma lista completa de tipos de nós, consulte a documentação javadoc do pacote org.w3c.dom .
Com a API DOM, você pode trabalhar 'em ambas as direções', ou seja, de XML para DOM "na memória", bem como de DOM para XML. Portanto, não é apenas adequado para "analisar" XML, mas também para gerar XML (fluxos ou arquivos).
Interface SAX
O analisador SAX, também chamado de SAXParser, é criado por javax.xml.parsers.SAXParserFactory . Em contraste com o analisador DOM, o SAXParser não cria uma representação "na memória" de um documento XML, o que consequentemente o torna mais rápido e menos exigente em termos de consumo de memória. Em contraste, o SAXParser informa o cliente da estrutura do documento XML por meio de funções de retorno de chamada , i. Em outras palavras, os métodos da instância DefaultHandler disponíveis para o analisador são executados.
A classe DefaultHandler está no pacote org.xml.sax.helpers . Isso implementa o ContentHandler, o ErrorHandler, o DTDHandler e a interface EntityResolver. A maioria dos clientes está interessada nos métodos da interface ContentHandler.
Os métodos ContentHandler, implementados pelo DefaultHandler, são chamados assim que o analisador SAX encontra os elementos correspondentes do documento XML. Os principais métodos desta interface são:
- os métodos startDocument () e endDocument () , que são chamados nas tags de início e fim de um documento XML.
- os métodos startElement () e endElement () , que são chamados nas marcas de início e fim de um elemento de documento.
- o método de caracteres () . Isso é chamado com o conteúdo entre as marcas de início e fim do respectivo elemento de documento XML.
O cliente oferece uma subclasse do DefaultHandler , que sobrescreve esses métodos e processa os dados. Isso também pode incluir o armazenamento de dados em um banco de dados ou a gravação em um fluxo .
Com a SAX-API você pode trabalhar 'apenas em uma direção', ou seja, do XML 'para' Java. Portanto, é adequado apenas para "analisar" XML. Com SAX você não pode criar XML (fluxos ou arquivos).
Interface XMLPULL
A API Streaming para XML (StAX) faz parte do JAXP desde JAXP 1.2 e, portanto, JSE 6 e J2EE 1.4 . Isso é usado para ler dados XML usando um conhecido analisador XMLPULL. XMLPULL é semelhante ao SAX, exceto que o analisador não envia informações ao aplicativo por meio de um mecanismo de evento ( "PUSH" ), como é o caso do SAX , mas o aplicativo obtém as próximas informações quando precisa (" PULL " ) Os analisadores XMLPULL são geralmente mais eficientes do que os analisadores SAX.
Interface XSLT
O e x tensible S tylesheet L anguage para T ransformations, abreviado XSLT , a conversão de um documento XML permite a outras formas de dados.
Validação XSD
A validação de arquivos XSD é compatível com JAXP 1.2. JAXP 1.2 é parte da plataforma Java do JSE 6.0 e J2EE 1.4.
Evidência individual
- ↑ https://www.jcp.org/en/jsr/detail?id=206
- ↑ http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113
Links da web
- Descrição do produto JAXP da Oracle
- Programa de exemplo usando o analisador DOM e o analisador SAX Tutorial: XML com Xerces para Java