guia de consulta rápida java e xml - martins fontes · guia de consulta rápida java e xml...

15
Guia de Consulta Rápida Java e XML Processamento de documentos XML com Java 2 a edição Renê Rodrigues Veloso Novatec

Upload: vanduong

Post on 03-Dec-2018

270 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Guia de Consulta Rápida Java e XML - Martins Fontes · Guia de Consulta Rápida Java e XML Processamento de documentos XML com Java 2a edição Renê Rodrigues Veloso Novatec

Guia de Consulta Rápida

Java e XML

Processamento de documentos XML com Java

2a edição

Renê Rodrigues Veloso

Novatec

Page 2: Guia de Consulta Rápida Java e XML - Martins Fontes · Guia de Consulta Rápida Java e XML Processamento de documentos XML com Java 2a edição Renê Rodrigues Veloso Novatec

Copyright 2007 da Novatec Editora Ltda.

Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora.

Editor: Rubens PRates

ISBN: 978-85-7522-111-2

Primeira impressão: Abril/2003 (ISBN: 85-7522-036-5)Segunda edição: Julho/2007 (ISBN: 978-85-7522-111-2)

novatec editoRa Ltda.Rua Luís Antônio dos Santos 11002460-000 São Paulo SP – BrasilTel.: +55 11 6959-6529Fax: +55 11 6950-8869E-mail: [email protected]: www.novatec.com.br

Page 3: Guia de Consulta Rápida Java e XML - Martins Fontes · Guia de Consulta Rápida Java e XML Processamento de documentos XML com Java 2a edição Renê Rodrigues Veloso Novatec

�Sumário

Introdução..............................................................................5Por.que.utilizar.Java?.........................................................5O.que.é.XML?...................................................................5

Analisando.documentos.XML.................................................7Parsers.XML.....................................................................8Processadores.XML...........................................................9Diferenças.entre.parser.e.processador.XML....................... 10Diferenças.entre.SAX.e.DOM........................................... 10

Trabalhando.com.JAXP..........................................................11As.APIs.JAXP.................................................................. 12Parser.DOM.................................................................... 13Parser.SAX...................................................................... 16Validando.com.Schema.em.JAXP.....................................22

Trabalhando.com.Xerces........................................................25Instalação.......................................................................25Parser.DOM....................................................................25Parser.SAX......................................................................26Manipulando.Namespaces...............................................26Validação.DTD...............................................................26Validação.Schema............................................................26

Tratando.erros......................................................................26A.Interface.ErrorHandler.................................................27Utilizando.o.tratador.de.erros.criado...............................28

Removendo.espaços.em.branco..............................................28Removendo.espaços.em.branco.com.JAXP.......................29Removendo.espaços.em.branco.com.Xerces......................29

API.DOM.............................................................................30Módulos.de.DOM...........................................................30Hierarquia.de.Classes/Interfaces...................................... 32Interface.Node................................................................ 33Interface.NodeList...........................................................38Interface.Element............................................................ 39Interface.NamedNodeMap.............................................. 41Interface.Attr...................................................................42Interface.Document.........................................................42Interface.CharacterData...................................................44Interface.Text...................................................................45Interface.DocumentType..................................................46Interface.Entity............................................................... 47Interface.Notation........................................................... 47Interface.ProcessingInstruction........................................ 47Interface.DOMImplementation........................................48Classe.DOMException....................................................48

Módulo.DOM.Traversal........................................................50Interface.NodeIterator......................................................51Interface.fábrica.DocumentTraversal................................ 52Interface.NodeFilter.........................................................54Interface.TreeWalker........................................................56

Gerando.documentos.XML...................................................58Criando.uma.árvore.DOM..............................................58Criando.um.objeto.Document.........................................58Criando.e.adicionando.nós-filho......................................58

Page 4: Guia de Consulta Rápida Java e XML - Martins Fontes · Guia de Consulta Rápida Java e XML Processamento de documentos XML com Java 2a edição Renê Rodrigues Veloso Novatec

� Sumário

Serialização...........................................................................60Serializando.com.JAXP....................................................60Serializando.com.Xerces..................................................64Classe.OutputFormat......................................................64

XPath.e.XSLT........................................................................68XPath.............................................................................68Funções.de.processamento.XPath.....................................73XPath.em.Java.................................................................77XSLT............................................................................... 81

Exemplos.práticos.................................................................84Trabalhando.com.DOM4J.....................................................90

Instalação.......................................................................90Parsing.XML...................................................................90Criando.um.Novo.Documento.XML................................ 91Percorrendo.o.documento.XML.......................................93Navegação.com.Xpath.....................................................93Convertendo.de.String.para.Árvore.DOM4J.....................94Principais.Interfaces.do.Pacote.org.dom4j.........................95

Serialização.de.Objetos.em.XML......................................... 100Serializando.com.XStream............................................. 100Serializando.com.XMLEncoder/XMLDecoder................ 102

Informações.adicionais.(links)............................................. 104Sobre.o.autor................................................................ 105

Índice.remissivo.................................................................. 106

Page 5: Guia de Consulta Rápida Java e XML - Martins Fontes · Guia de Consulta Rápida Java e XML Processamento de documentos XML com Java 2a edição Renê Rodrigues Veloso Novatec

�Introdução

Introdução

Por que utilizar Java?

A.frase.“escreva.um.e.rode.em.qualquer.lugar”.é.um.bom.motivo.para. começar. a. pensar. em. Java. como. sendo. a. plataforma.de. desenvolvimento. de. aplicações. poderosas,. seguras. e. que.funcionam.em.qualquer.ambiente.computacional..Java.é.uma.linguagem.popular.e.de.recursos.fantásticos;.com.ela.é.possível.fazer.quase.tudo.o.que.se.queira,.é.ideal.para.a.implementação.de.aplicativos.baseados.em.Intranet.e.Internet.e.em.qualquer.outro.software.para.dispositivos.que.se.comunicam.em.uma.rede.(como.telefones.celulares,.pagers.e.PDAs.–.Personal.Digital.Assistants),.e.possui.recursos.importantes.como.manipulação.de.strings,.imagens.gráficas,.componentes.de.interface.gráfica.com.o.usuário,.tratamento.de.exceções,.multitarefa,.multimídia.(áudio,.imagens,.animação.e.vídeo),.processamento.de.arquivos,.processamento.de.banco.de.dados,.computação.distribuída.e.estruturas.de.dados.pré-empacotadas..

Os. recursos. de. Java. são. exatamente. o. que. as. empresas. e.organizações.estão.procurando.para.atender.aos.requisitos.de.processamento.de.informações.atuais..

A. linguagem. Java. foi. desenvolvida. pela. Sun. Microsystems.e. está. disponível. gratuitamente. na. Internet. no. site. da. Sun:.http://java.sun.com.

O que é XML?

A. XML. (Extensible. Markup. Language,. ou. Linguagem. de.Marcação.Extensível,.com.extensível.significando.expansível),.é.uma.metalinguagem.de.marcação.definida.pelo.W3C.(World.Wide.Web.Consortium).em.www.w3.org,.que.lhe.permite.criar.a.sua.própria.linguagem.(baseada.em.marcações.–.tags).e.seguindo.as.regras.que.você.definir.em.um.determinado.contexto..

O.W3C.não.é.um.órgão.de.padronização.como.a.ISO,.mas.de.recomendações..Isso.significa.que.ele.indica.o.que.é.melhor,.e.não.o.que.deverá,.necessariamente,.ser.utilizado..Por.exemplo,.a.recomendação.XML.1.1.

Interoperabilidade

É.muito.comum.encontrarmos,.principalmente.em.ambientes.empresariais,.grandes.redes.de.comunicação.de.dados.interligando.aplicativos. distribuídos. entre. máquinas. com. arquiteturas. e.sistemas.operacionais.diferentes..E.para.que.isso.aconteça,.é.necessário.que.as.aplicações.sejam.capazes.de.conversar.entre.si,.ou.melhor,.é.fundamental.que.haja.interoperabilidade.entre.elas...Para.que.ocorra.interoperabilidade,.também.é.preciso.que.as.aplicações.aceitem.uma.especificação.comum.de.protocolos.e.formato.de.dados.e.que.sejam,.o.máximo.possível,.baseadas.

Page 6: Guia de Consulta Rápida Java e XML - Martins Fontes · Guia de Consulta Rápida Java e XML Processamento de documentos XML com Java 2a edição Renê Rodrigues Veloso Novatec

� Introdução

em.padrões.abertos..A.Internet.é.um.bom.exemplo.de.ambiente.facilitador.de.interoperabilidade,.e.padronização.é.uma.palavra.importante.na.grande.rede,.pois.nela.devemos.garantir.que.a.informação.transmitida.será.entendida.pelo.receptor,.como.os.diversos.browsers.e.aplicações.clientes.existentes.

Uma.das.principais.vantagens.da.XML.é.justamente.promover.a. interoperabilidade.ou.a.troca.dos.dados.de.maneira.simples,.barata.e.rápida.entre.os.diversos.tipos.de.computadores.e.sistemas..E.isso.se.dá.porque.um.arquivo.XML.é.baseado.em.formato.texto,.contribuindo.até.mesmo.para.a.leitura.e.maior.entendimento.

Organização e personalização

XML.representa.os.dados.de.maneira.hierárquica.e.organizada..Essa.representação.é.feita.por.meio.de.uma.árvore.que.trata.cada.elemento.como.sendo.um.nó,.facilitando.o.entendimento.e.a.busca.de.informações.

Uma.outra.função.de.XML.é.a.capacidade.de.separar.o.conteúdo.da.apresentação;.preocupa-se.com.“o.que.mostrar”,.enquanto.HTML.se.preocupa.em.“como.mostrar”.a.informação..Veja.a.tag.<p>,.por.exemplo;.em.HTML,.essa.tag.significa.o.início.de.um.parágrafo,.já.em.XML,.essa.mesma.tag.poderia.representar.um.preço,.um.parâmetro,.uma.pessoa.etc.,.dependendo.do.contexto.em.que.se.encontra.

Existem.várias. linguagens.de.marcação.que. foram.criadas.a.partir. de. XML. e. que. se. tornaram. recomendações. do.W3C,.como. a. MathML. (Mathematical. Markup. Language). em.www.w3.org/Math,. que. fornece. uma. maneira. padrão. de.descrever. equações,. símbolos. e. expressões. matemáticas,. e. a.CML. (Chemical. Markup. Language). em. www.xml-cml.org,.que.descreve.informações.moleculares,.gerencia.problemas.de.equações.químicas.e.ajuda.os.químicos.a.manipular.átomos.e.moléculas.como.tags.

Autodescrição dos dados

Os.dados.em.um.documento.XML.são.autodescritíveis,.já.que.as.tags.informam.o.tipo.de.informação.que.está.por.vir..Por.exemplo,.em.um.documento.XML,.como.o.mostrado.a.seguir:

livro.xml

<?xml version=”1.0” encoding=”UTF-8”?><LIVRO> <TITULO> Java e XML </TITULO> <ASSUNTO> Processamento de documentos XML com Java </ASSUNTO></LIVRO>

Page 7: Guia de Consulta Rápida Java e XML - Martins Fontes · Guia de Consulta Rápida Java e XML Processamento de documentos XML com Java 2a edição Renê Rodrigues Veloso Novatec

�Introdução

Tomando.como.base.somente.os.nomes.das.tags.ou.elementos.XML,. podemos. descobrir. de. que. se. trata. o. documento.apresentado.. Neste. caso,. o. documento. livro.xml. descreve.informações.sobre.um.livro.cujo.título.é.“Java.e.XML”.e.o.assunto.é.“Processamento.de.documentos.XML.com.Java”.

Documentos bem formados

Um.bom.documento.XML.precisa.ser.bem.formado,.ou.seja,.deve.seguir.as.regras.de.sintaxe.estabelecidas.para.a.XML.pelo.W3C.na.especificação.XML.1.1.

O.documento.XML.precisa.conter.um.ou.mais.elementos.(tags);.deve.haver.somente.um.elemento.raiz,.que.deve.conter.todos.os. demais. elementos.. Cada. elemento. deve. estar. aninhado.corretamente.dentro.de.outro.elemento..Cada.elemento.deve.ter.a.sua.tag.de.fechamento.correspondente.

Diferentemente. do. HTML. que. pode. ter. tags. abertas,.embaralhadas. e. sem. raiz,. o. documento. XML. deve. ser.sintaticamente.correto.

Documentos válidos

Um.documento.XML.é.dito.válido.se.houver.uma.definição.de.tipo.de.documento.(DTD).ou.Schema.associado.a.ele.

DTD/Schema. dita. as. regras. que. o. documento. deve. seguir,.quais.são.seus.elementos,.os.seus.nomes.e.que.tipo.de.dados.suporta..Veja.um.exemplo.de.DTD.para.o.documento.livro.xml mostrado.anteriormente:

<!ELEMENT LIVRO (TITULO, ASSUNTO)><!ELEMENT TITULO (#PCDATA)><!ELEMENT ASSUNTO (#PCDATA)>

O.arquivo.com.esse.texto.pode.ser.chamado.de.livro.dtd.

Observação

Um.documento.bem.formado.nem.sempre.é.válido,.mas.um.documento.válido.é.sempre.bem.formado.

Analisando documentos XMLPara.trabalhar.com.documentos.no.formato.XML,.de.maneira.que.se. tenha.acesso.a. todos.os.elementos.que.constituem.o.documento,.precisamos.ter.em.mãos.algumas.ferramentas.que.nos.permitirão.realizar.a.parsing.ou.análise.dos.dados..Essas.ferramentas.são.as.chamadas.APIs.(Application.Programming.Interface),.disponíveis.para.Java,.com.as.quais.construíremos.os.parsers.e.processadores.XML..

Page 8: Guia de Consulta Rápida Java e XML - Martins Fontes · Guia de Consulta Rápida Java e XML Processamento de documentos XML com Java 2a edição Renê Rodrigues Veloso Novatec

� Analisando documentos XML

Parsing

É.o.processo.de.leitura.e.divisão.do.documento.em.elementos,.atributos,.entidades,.comentários.e.outros.tipos.de.dados,.por.meio.do.qual.poderão.ser.analisados.e.validados..

Parsers XML

O.parser.é.uma.biblioteca.de.software.(uma.classe.em.Java).que.lê.o.documento.XML.e.verifica.se.ele.é.bem.formado.e.válido.

Validante e não-validante

Os. parsers. XML. são. categorizados. como. validantes. e. não-validantes:.

•. Validante:.Um.parser.validante.deve.checar.as.restrições.de.validação.e.boa.formação.do.documento.de.acordo.com.o.DTD/Schema.associado.

•. Não-validante:.Quando.lemos.um.documento.XML,.um.parser.não-validante.checa.a.sua.boa.formação.de.acordo.com.a.especificação.XML.1.1.e.informa.quaisquer.violações.ou.erros.quanto.à.estrutura.do.documento..

Java.1.4.foi.a.primeira.versão.de.Java.a.incluir.um.parser.XML..Em.outras.versões,.é.necessário.fazer.o.download.do.parser.na.web.e.instalá-lo.normalmente.como.qualquer.outra.biblioteca.Java,.bastando.adicioná-lo. ao. seu. CLASSPATH..Mesmo.em.Java.1.4.é.possível.substituir.o.parser-padrão.por.um.diferente.que.contenha.uma.característica.adicional,.mais.simples.ou.mais.rápida.em.seus.documentos.

Parsers disponíveis

Existem.vários. tipos.de.analisadores.ou.parsers.XML,. todos.com. características. e. implementações. distintas,. podendo.ser. encontrados. disponíveis. para. download. na. internet. ou.comercializados..A.seguir.serão.citados.os.mais.comuns.

Ælfred

O. Ælfred. (http://www.microstar.com/aelfred.html). é. um.pequeno.e. rápido.parser. especialmente.desenvolvido.para.o.uso.em.applets.Java..Foi.projetado.para.programadores.Java.que.querem.processar.XML.em.seus.applets.e.outras.aplicações.sem.aumentar.excessivamente.o. tamanho.do.projeto..Alfred.consiste. em. somente. duas. classes,. com. um. total. de. 26K. de.tamanho,.e.necessita.de.pouca.memória.para.executar..Suporta.a.API.SAX.

Page 9: Guia de Consulta Rápida Java e XML - Martins Fontes · Guia de Consulta Rápida Java e XML Processamento de documentos XML com Java 2a edição Renê Rodrigues Veloso Novatec

�Analisando documentos XML

Crimson

Antes. conhecido. como.“Projeto. Java. X”. (http://xml.apache.org/crimson/),.é.o.parser.que.a.Sun.empacota.com.o.JDK.1.4..Crimson.suporta.mais.ou.menos.as.mesmas.APIs.e.especificações.que.a.Xerces.–.SAX2,.DOM2,.JAXP,.XML.1.0,.Namespaces.em.XML.e.schema.

Oracle XML Parser

Encontrado.em.http://technet.oracle.com/tech/xml/..É.um.parser.que.permite.a.análise.de.documentos.XML.por.meio.das.APIs.SAX.ou.DOM,.usando.os.modos.validante.ou.não-validante.

Piccolo

Piccolo. de.Yuval. Oren. é. um. parser. pequeno,. rápido. e. não-validante..No.entanto,.faz.a.leitura.de.DTDs.externas.e.as.aplica.ao. documento. ajustanto. valores. de. atributos. e. resolvendo.referências.a.entidades.externas..Suporta.exclusivamente.a.API.SAX.. Não. possui. implementação. DOM.. Mais. informações.podem.ser.obtidas.em.http://piccolo.sourceforge.net/.

Xerces

Um. dos. melhores. e. mais. completos. parsers. disponíveis.atualmente.é.Xerces-J.do.Projeto.XML.Apache,.disponível.em.http://xerces.apache.org/..Atualmente,.na.versão.2.x,.possui.a.melhor. adaptação. à. especificação. XML.1.1.. Fornece. suporte.completo.às.APIs.SAX2.e.DOM.Level.3,.e.até.JAXP..Xerces-J.é.altamente.configurável.e.adaptável.para.quase.tudo.de.que.um.parser.necessita..Xerces-J.também.suporta.W3C.XML.Schema.Language.e.Namespaces.

XP

Encontrado.em.http://www.jclark.com/xml/xp/index.html..XP.é.um.parser.que.suporta.a.especificação.1.0.da.XML..É.capaz.de.detectar.documentos.bem.formados,.no.entanto,.atualmente,.é.um.parser.não-validante..Suporta.a.API.SAX.

Processadores XML

Basicamente.um.processador.XML.é.um.módulo.de.software.que.faz.a.leitura.de.documentos.XML.e.fornece.os.aplicativos.necessários. para. acessar. o. conteúdo. e. a. estrutura. desses.documentos..A.especificação.XML.1.0.do.W3C.(http://www.w3.org). define. precisamente. as. funções. de. um. processador.XML..Um.processador.XML.(Figura.1). funciona.como.uma.ponte.entre.um.documento.XML.e.uma.aplicação,.podendo,.além.de.analisar,.também.gerar.documentos.XML..A.aplicação.utiliza.uma.API.para.acessar.objetos.que.representam.parte.do.documento.XML..

Page 10: Guia de Consulta Rápida Java e XML - Martins Fontes · Guia de Consulta Rápida Java e XML Processamento de documentos XML com Java 2a edição Renê Rodrigues Veloso Novatec

10 Analisando documentos XML

Documento XML

Processador XML

Árvore DOMEventos SAX

Aplicação

AnáliseGeraçãoAcesso com DOM e SAX

Figura 1 – Processador XML.

Diferenças entre parser e processador XML

Um.parser.XML.tem.a.função.de.fazer.a.análise.do.conteúdo.de.um.documento.XML.e.verificar.se.esse.documento.é.bem.formado. e. válido.. Já. um. processador. XML,. além. de. fazer. a.parsing.ou.a.análise.dos.dados,.pode.navegar.por.entre.os.nós.da.árvore.XML,.acessar.todos.os.elementos.e.campos,.como.também. gerar. documentos. em. formato. XML. e. quaisquer.outros.formatos.

Diferenças entre SAX e DOM

O.objetivo.das.APIs.SAX.e.DOM.é.tornar.a.interpretação.XML.fácil.e.satisfatória.para.programas.de.computador..

Para.fazer.essa.interpretação,.existem.duas.técnicas.conhecidas.como.Simple.API.for.XML.(SAX).e.Document.Object.Model.(DOM),.baseadas.em.abstrações.dos.conjuntos.de.informação.de.um.documento.XML.(Figura.2)..Essas. técnicas.projetam.esses.conjuntos.e.informações.em.um.modelo.de.objetos.que.permite.aos.programadores.manipulá-los..

SAX

SAX.(Simple.API.for.XML).é.um.conjunto.de.interfaces.que.decompõe.um.documento.XML.em.uma.sucessão. linear.de.chamadas.de.métodos.

DOM

DOM.(Document.Object.Model).é.um.conjunto.de.interfaces.que.decompõe.um.documento.XML.em.uma.árvore.transversal.hierárquica.de.nós/objetos.

Page 11: Guia de Consulta Rápida Java e XML - Martins Fontes · Guia de Consulta Rápida Java e XML Processamento de documentos XML com Java 2a edição Renê Rodrigues Veloso Novatec

11Analisando documentos XML

<?xml version="1.0" encoding="UTF-8"?><livro> <nome>Java e XML</nome> <editora>Novatec</editora></livro>

PARSING

livro

nome editora

Java e XML Novatec

startElement: livrostartElement: nomecharacters: Java e XMLendElement: nomestartElement: editoracharacters: NovatecendElement: editoraendElement: livro

Figura 2 – Diferenças entre DOM e SAX, respectivamente.

Comparando DOM e SAX

•. DOM.é.uma.solução.natural.para.lidar.com.dados.que.são.mais.bem.descritos.como.uma.árvore.

•. Para.trabalhar.principalmente.com.dados.estruturados.ou.gerados.pelo.computador,.SAX.pode.ser.mais.conve-niente.

•. SAX.possui.métodos.e.estruturas.de.dados.mais.simples.do.que.os.de.DOM,.podendo.muitas.vezes.alcançar.alta.performance.

•. DOM.agiliza.a.pesquisa.por.elementos,.bastando.apenas.indicar.o.caminho.de.nós.na.árvore.(por.exemplo,.com.expressões.XPath).

•. SAX.utiliza.menos.memória.que.DOM,.pois.não.precisa.manipular.uma.estrutura.de.dados.complexa,.como.uma.árvore.em.memória.

Trabalhando com JAXPNas. versões. mais. recentes. de. J2SE. e. J2EE,. é. incluído. um.conjunto-padrão.de.APIs.para.XML,.conhecido.como.JAXP.(Java.APIs.for.XML.Processing)..

Essas.APIs.também.estão.disponíveis.separadamente,.em.um.pacote.de.bibliotecas.Java.chamado.JAX.Pack.(Java.XML.Pack),.no.site.da.Sun.(http://java.sun.com),.contendo.várias.outras.APIs.relacionadas.a.XML.e.Web.Services..

JAXP.suporta.os.analisadores-padrão.SAX.(Simple.API.for.XML.Parsing). e. DOM. (Document. Object. Model),. assim. como. o.padrão.XSLT.(XML.Stylesheet.Language.Transformation),.dando.maior.controle.sobre.a.apresentação.dos.dados.e.capacitando.a.conversão.dos.dados.para.outro.documento.XML.ou.para.outros. formatos,.como.HTML..JAXP.também.trabalha.com.DTD/Schema.e.suporta.namespaces.

Page 12: Guia de Consulta Rápida Java e XML - Martins Fontes · Guia de Consulta Rápida Java e XML Processamento de documentos XML com Java 2a edição Renê Rodrigues Veloso Novatec

12 Trabalhando com JAXP

As APIs JAXP

As.principais.APIs.JAXP.são.definidas.no.pacote.javax.xml.parsers..Esse.pacote.contém.duas. fábricas.de.classes:.SAXParserFactory.e. DocumentBuilderFactory,. que. fornecem. instâncias. para. um.objeto. SAXParser. e.um.objeto. DocumentBuilder,. respectivamente..A.vantagem.é.que.essas.fábricas.de.classes,.SAXParserFactory.e.DocumentBuilderFactory,. permitem. utilizar. uma. implementação.XML.oferecida.por.outros.fornecedores.sem.a.necessidade.de.mudar.o.código.

Uma visão geral dos pacotes

As.APIs.SAX.e.DOM.são.definidas.pelo.grupo.XML-DEV.e.pelo.W3C,.respectivamente..As.bibliotecas.que.definem.essas.APIs.são:

Pacotes DOM

Pacote Descrição

org.w3c.dom. Define.a.interface.de.programação.DOM.para.documentos.XML.(especificação.W3C).

javax.xml.parsers. Define.a.classe-fábrica.DocumentBuilderFactory.e.a.classe.DocumentBuilder,.que.constroem.um.objeto.implementando.a.interface.Document.do. W3C.. A. fábrica. utilizada. para. criar. o.construtor.é.determinada.pelas.propriedades.do. pacote. javax.xml.parsers,. que. podem.ser.ajustadas.por.um.comando.de.linha.ou.ativadas. quando. se. invocar. o. método. new Instance..Esse.pacote.também.define.a.classe.ParserConfigurationException. para. informar.erros.

Pacotes SAX

Pacote Descrição

org.xml.sax. Define.as.interfaces.SAX..O.nome.org.xml.é.o.prefixo.do.pacote.que.foi.estabelecido.pelo.grupo.que.definiu.a.API.SAX.

org.xml.sax.ext. Define.as.extensões.SAX.que.são.utilizadas.em.um.processamento.SAX.mais.sofisticado,.por.exemplo,.para.processar.um.DTD.ou.para.ver.a.sintaxe.detalhada.de.um.arquivo.

org.xml.sax.helpers.Contém.classes.auxiliares.que.facilitam.a.utilização.de.SAX.

Javax.xml.parsers. Define.a.classe.SAXParserFactory.que.retorna.o.SAXParser..Também.define.classes.de.exceções.para.informar.erros.

Page 13: Guia de Consulta Rápida Java e XML - Martins Fontes · Guia de Consulta Rápida Java e XML Processamento de documentos XML com Java 2a edição Renê Rodrigues Veloso Novatec

1�Trabalhando com JAXP

Pacotes XSLT

Pacote Descrição

javax.xml.transform. Define. as. classes. TransformerFactory.e. Transformer,. que. são. utilizadas.para.obter.um.objeto.capaz.de.fazer.transformações. em. um. documento.XML.seguindo.as.regras.contidas.em.uma.folha.de.estilo..Depois.de.criar.um. objeto. transformer,. é. invocado.o. método. transform(),. fornecendo.uma. entrada. (source). e. uma. saída.(output).

javax.xml.transform.dom. Classes.para.criar.objetos.de.entrada.(input).e.saída.(result).de.um.DOM.

javax.xml.transform.sax. Classes.para.criar.a.entrada.(input).de.um.parser.SAX.e.objetos.de.saída.(output).de.um.manipulador.de.even-tos.SAX.

javax.xml.transform.stream.Classes.para.criar.objetos.de.entrada.(input).e.saída.(output).de.uma.stream.de.I/O.

Parser DOM

O. Document. Object. Model. (DOM). é. uma. interface. de.programação. especificada. pelo. W3C. para. o. tratamento. e.manipulação.de.dados.em.documentos.XML..DOM.sugere.um.meio.de.abordar.documentos.XML.como.sendo.uma.árvore.de.nós,.e.essa.é.a.maneira.mais.correta,.visto.que.o.documento.XML. organiza-se. também. em. forma. de. árvore.. A. Figura. 3.apresenta.o.processo.de.construção.e.funcionamento.de.um.parser.DOM.JAXP..Para.mais.informações.sobre.DOM,.visite.o.site.www.w3.org.

DocumentBuilderFactory

DocumentBuilder

ObjetoDocument

Árvore DOM

Dados XML

Figura � – Construção e funcionamento de um parser DOM JAXP.

Page 14: Guia de Consulta Rápida Java e XML - Martins Fontes · Guia de Consulta Rápida Java e XML Processamento de documentos XML com Java 2a edição Renê Rodrigues Veloso Novatec

1� Trabalhando com JAXP

DocumentBuilder e DocumentBuilderFactory

Para.construir.um.parser.DOM.em.JAXP,.é.necessário.utilizar.as.classes.javax.xml.parsers.DocumentBuilderFactory.e.javax.xml.parsers.DocumentBuilder.e.configurá-las.corretamente.

import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.DocumentBuilder;import org.w3c.dom.Document;

String nome_arquivo;...DocumentBuilderFactory factory = DocumentBuilderFactory.

newInstance();DocumentBuilder builder = factory.newDocumentBuilder();Document doc = builder.parse(nome_arquivo);

É.necessário.seguir.alguns.passos.para.obter.um.parser.DOM.JAXP:

1.. Utilize.o.método-fábrica.estático.DocumentBuilderFactory.n e w I n s t a n c e ( ) . par a . re tor n ar . u m . o b j e to.DocumentBuilderFactory.

2.. Utilize. o. método. newDocumentBuilder(). do. objeto.DocumentBuilderFactory. para. retornar. uma. instância. da.classe.DocumentBuilder.

3.. Utilize.um.dos.cinco.métodos.parse().de.DocumentBuilder.para.ler.o.documento.XML.e.retornar.um.objeto.org.w3c.dom.Document.

4.. Lembre-se.de.colocar.tudo.em.um.bloco.try-catch.para.tratar.possíveis.exceções.

Exemplo completo

import javax.xml.parsers.*;import org.w3c.dom.Document;import java.io.*;

public class ParserExemplo { public static void main(String args[]) { String nomeArquivo = “”;

if(args.length > 0) nomeArquivo = args[0]; else { System.out.println(“Use: ParserExemplo seu_arquivo_XML”); System.exit(0); } try{ DocumentBuilderFactory factory =

DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(nomeArquivo); } catch(Exception e){e.printStackTrace();} }}

Page 15: Guia de Consulta Rápida Java e XML - Martins Fontes · Guia de Consulta Rápida Java e XML Processamento de documentos XML com Java 2a edição Renê Rodrigues Veloso Novatec

1�Trabalhando com JAXP

Métodosparse()

public Document parse(InputSource fonte) throws SAXException, IOException

public Document parse(String uri) throws SAXException, IOExceptionpublic Document parse(File arquivo) throws SAXException,

IOExceptionpublic Document parse(InputStream entrada) throws

SAXException, IOExceptionpublic Document parse(InputStream entrada,String systemID)

throws SAXException,IOException

Configurando DocumentBuilderFactory

A.classe.DocumentBuilderFactory.possui.métodos.de.ajuste.set...(),.que.permitem.determinar. exatamente.como.o.parser. criado.deve.se.comportar.

Ignorando comentários

public boolean isIgnoringComments();public void setIgnoringComments(boolean ignora);

Esses. métodos. determinam. se. o. parser. produzido. por. esse.factory.irá.gerar.nós.de.comentários.que.serão.vistos.na.entrada.do. documento.. O. valor. default,. false,. significa. que. os. nós-comentário.serão.produzidos..

Ignorando espaços em branco

public boolean isIgnoringElementContentWhitespace();public void setIgnoringElementContentWhitespace(boolean ignorarWS);

Esses.métodos.determinam.se.o.parser.irá.gerar.nós-texto.para.os.chamados.“espaços.em.branco.ignoráveis”,.isto.é,.espaço.em.branco.que.ocorre.entre.os.elementos.onde.o.DTD.especifica.que.os.caracteres.de.dados.analisados.não.podem.aparecer.

O.valor.default.(padrão).é.false,.isto.é,.inclui.nós-texto.para.espaços.em.branco.ignoráveis..Para.que.essa.propriedade.seja.aplicada,.ou.seja,.para.que.se.possa.atribuir.true.ao.argumento.ignoraWS,.o.documento.deve.ter.um.DTD.associado.a.ele.e.deve.ser.válido..De.outra.forma,.o.parser.não.pode.saber.qual.espaço.em.branco.é.ignorável.e.qual.não.é.

Reconhecendo Namespaces

public boolean isNamespaceAware();public void setNamespaceAware(boolean namespaceAware);

Esses.métodos.determinam.se.o.parser.produzido.é.names-pace aware,.ou.seja,.se.reconhece.namespaces..Essa.característica.irá.ajustar.as.propriedades.de.prefixo.e.URI.namespace.dos.nós-elemento.e.atributos.

O. valor. default. (padrão). é. false,. mas. deve. ser. ajustado.sempre.para.true..Por.exemplo:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

factory.setNamespaceAware(true);