• Nenhum resultado encontrado

Java e XML Processamento de documentos XML com Java

N/A
N/A
Protected

Academic year: 2021

Share "Java e XML Processamento de documentos XML com Java"

Copied!
15
0
0

Texto

(1)

Guia de Consulta Rápida

Java e XML

Processamento de

documentos XML com Java

2

a

edição

Renê Rodrigues Veloso

(2)

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)

n

ovatec

e

ditoRa

L

tda

.

Rua Luís Antônio dos Santos 110

02460-000 São Paulo SP – Brasil

Tel.: +55 11 6959-6529

Fax: +55 11 6950-8869

E-mail:

novatec@novatec.com.br

(3)

 Sumário Introdução...5 Por.que.utilizar.Java?...5 O.que.é.XML?...5 Analisando.documentos.XML...7 Parsers.XML...8 Processadores.XML...9 Diferenças.entre.parser.e.processador.XML... 10 Diferenças.entre.SAX.e.DOM... 10 Trabalhando.com.JAXP...11 As.APIs.JAXP... 12 Parser.DOM... 13 Parser.SAX... 16 Validando.com.Schema.em.JAXP...22 Trabalhando.com.Xerces... 25 Instalação... 25 Parser.DOM... 25 Parser.SAX...26 Manipulando.Namespaces...26 Validação.DTD...26 Validação.Schema...26 Tratando.erros...26 A.Interface.ErrorHandler...27 Utilizando.o.tratador.de.erros.criado...28 Removendo.espaços.em.branco...28 Removendo.espaços.em.branco.com.JAXP...29 Removendo.espaços.em.branco.com.Xerces...29 API.DOM...30 Módulos.de.DOM...30 Hierarquia.de.Classes/Interfaces... 32 Interface.Node... 33 Interface.NodeList...38 Interface.Element... 39 Interface.NamedNodeMap... 41 Interface.Attr...42 Interface.Document...42 Interface.CharacterData...44 Interface.Text... 45 Interface.DocumentType...46 Interface.Entity... 47 Interface.Notation... 47 Interface.ProcessingInstruction... 47 Interface.DOMImplementation...48 Classe.DOMException...48 Módulo.DOM.Traversal...50 Interface.NodeIterator...51 Interface.fábrica.DocumentTraversal... 52 Interface.NodeFilter...54 Interface.TreeWalker...56 Gerando.documentos.XML...58 Criando.uma.árvore.DOM...58 Criando.um.objeto.Document...58 Criando.e.adicionando.nós-filho...58

(4)

 Sumário Serialização...60 Serializando.com.JAXP...60 Serializando.com.Xerces...64 Classe.OutputFormat...64 XPath.e.XSLT...68 XPath...68 Funções.de.processamento.XPath... 73 XPath.em.Java...77 XSLT... 81 Exemplos.práticos...84 Trabalhando.com.DOM4J...90 Instalação...90 Parsing.XML...90 Criando.um.Novo.Documento.XML... 91 Percorrendo.o.documento.XML...93 Navegação.com.Xpath...93 Convertendo.de.String.para.Árvore.DOM4J...94 Principais.Interfaces.do.Pacote.org.dom4j...95 Serialização.de.Objetos.em.XML... 100 Serializando.com.XStream... 100 Serializando.com.XMLEncoder/XMLDecoder... 102 Informações.adicionais.(links)... 104 Sobre.o.autor... 105 Índice.remissivo... 106

(5)



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.

(6)

 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>

(7)



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 XML

Para.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..

(8)

 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.

(9)



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..

(10)

10 Analisando documentos XML

Documento XML

Processador XML

Árvore DOM Eventos SAX Aplicação Análise Geração

Acesso 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.

(11)

11 Analisando 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: livro startElement: nome characters: Java e XML endElement: nome startElement: editora characters: Novatec endElement: editora endElement: 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 JAXP

Nas. 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.

(12)

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.

(13)

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. DocumentBuilder Factory DocumentBuilder Objeto Document Árvore DOM Dados XML

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

(14)

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 ( ). pa r a . re to r n a r . 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();} }

(15)

1

Trabalhando com JAXP Métodos parse()

public Document parse(InputSource fonte) throws SAXException, IOException

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

IOException

public Document parse(InputStream entrada) throws SAXException, IOException

public 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);

Referências

Documentos relacionados

Estrelas são corpos celestes autogravitantes que emitem luz própria, cuja fonte de energia vem da fusão nuclear de hidrogênio em hélio e, posteriormente, em elementos mais pesados..

É inegável a influência de André Cholley, geógrafo físico francês que considerava a geografia como o estudo da combina- ção dos vários elementos da paisagem, ou seja, contemplava

Brendo Águas e Bebidas 61.97% Mercado de Sr.. COLÉGIO PARTICULAR

Acerca da psicopatologia da religião, juntamente a Freud e Jung, Ales Bello cita novamente Callieri: este autor aborda a questão da experiência religiosa não

Em todos os ambientes de trabalho em que existe a relação entre o homem e a máquina é possível a aplicação de métodos ergonômicos para a identificação

Num estudo clínico realizado em doentes com diabetes tipo 2 e nefropatia, a incidência de hipercaliémia foi superior no grupo tratado com Cozaar em comparação com o grupo do

para tratar doentes com insuficiência cardíaca crónica, quando o tratamento com medicamentos específicos chamados inibidores da enzima de conversão da angiotensina (inibidores da

• O módulo principal.v serve para correr todos os módulos acima descritos aquando da simulação em Veriwell, iniciando as variáveis enable, reset e tecla; de seguida evoca os