Escolar Documentos
Profissional Documentos
Cultura Documentos
XML
eXtensible Markup Language
Prof. Rmulo Silva
Fev/2010
Rmulo C. Silva
Ementa
Histrico Aspectos bsicos de XML DTD XSD XPath DOM e SAX
Rmulo C. Silva
Introduo
Rmulo C. Silva
Rmulo C. Silva
XML - Histrico
1969: GML (Generalized Markup Language), 1a linguagem de marcao usada em aplicativos que processavam documentos 1974: SGML (Standard Generalized Markup Language) 1986: SGML padronizada pela ISO e aprimorada nos anos seguintes. HTML um tipo de SGML destinado apresentao com utilizao de hiperlinks
Rmulo C. Silva
Histrico
1995: HTML 2.0 1996: World Wide Web Consortium (W3C, www.w3.org) inicia o projeto de construo de uma linguagem de marcao que combinasse a flexibilidade da SGML com aceitao do HTML 1998: XML 1.0 torna-se uma recomendao do W3C. 1999: XHTML
Rmulo C. Silva
Rmulo C. Silva
XLink
especificao W3C que permite definir vnculos entre documentos XML
Rmulo C. Silva
XQuery
Linguagem para pesquisar documentos XML
Rmulo C. Silva
XML - Ferramentas
Existem vrios editores
Alguns com validadores Edio de DTDs e XML Schemas Depurao de XSLT
EditiX
www.editix.com
XML
Mostra o que dados significam Descreve o contedo O usurio define suas prprias tags
Rmulo C. Silva
Sintaxe XML
Um documento constitudo de 03 partes:
Prlogo (opcional): Informaes gerais sobre o documento Corpo Um ou mais elementos na forma de uma rvore hierquica Eplogo (opcional) Comentrios, instrues de processamento
Rmulo C. Silva
Prlogo
Corpo
Eplogo
Rmulo C. Silva
XML - Prlogo
Pode conter uma nica declarao XML
<?xml version = 1.0?>
Exs de valores vlidos para o atributo encoding: UTF-8, UTF-16, ISO-10646UCS-2, ISO-8859-1
Rmulo C. Silva
XML - Prlogo
Parmetros:
version Verso da especificao da recomendao W3C Valores possveis: 1.0 ou 1.1 obrigatrio encoding opcional standalone opcional Indica se declaraes externas afetam a interpretao do contedo do documento Valores possveis: yes (sem declaraes externas que afetam a interpretao) e no (com declaraes externas que afetam a interpretao)
Rmulo C. Silva
Sintaxe XML
A estrutura de um elemento basicamente a mesma que no HTML
Marcaes iniciam-se com < e terminam com > As marcaes so case sensitive. Os caracteres so Unicode 2.1 (16 bits) Nomes de estruturas devem comear com letra, underscore (_) ou dois pontos (:)
Rmulo C. Silva
Sintaxe XML
Elementos so os blocos bsicos de construo de uma marcao XML
Podem conter outros elementos, dados de caractere, comentrios e sees de CDATA (contedo de elementos). So delimitados por tags Inicial: <nomeTag> Final: </nomeTag> Ex.:
<UmElemento> <PrimeiroElementoInterno> ... </PrimeiroElementoInterno> ... <UltimoElementoInterno> ... </UltimoElementoInterno> </UmElemento>
Rmulo C. Silva
Sintaxe XML
Ao contrrio de HTML, a tag final no pode ser omitida
Exceo: tag de elemento vazio
Rmulo C. Silva
<livro categoria = romance > <autor> Machado de Assis </autor> <titulo> Dom Casmurro </titulo> </livro>
Rmulo C. Silva
Rmulo C. Silva
Rmulo C. Silva
Rmulo C. Silva
Rmulo C. Silva
Rmulo C. Silva
Rmulo C. Silva
<paragrafo> O usurio <pessoa> Jose da Silva</pessoa> tem <idade> 45</idade> anos </paragrafo>
elemento
Rmulo C. Silva
Rmulo C. Silva
Rmulo C. Silva
XML vlido
Um documento bem formado no necessariamente vlido. Documento vlido: um documento bem formado em que as marcaes seguem regras definidas em um DTD (Document Type Definition) ou XML Schema declarado na Raiz
Rmulo C. Silva
Exerccios
Rmulo C. Silva
Os valores dos identificadores SYSTEM e PUBLIC so URIs (Uniform Resource Identifiers) e servem para indicar DTDs. O mais comum usar URLs.
Rmulo C. Silva
A palavra reservada SYSTEM indica que a URL deve apontar para um arquivo existente
O uso de endereos da Web podem criar problemas no caso de o arquivo ser removido
Se PUBLIC for usado, a localizao simplesmente passada para a aplicao que estiver usando o DTD
Rmulo C. Silva
Rmulo C. Silva
DTD - declaraes
DTDs so construdos usando um conjunto de declaraes. Declarao:
delimitada por <! e > usa palavras-chave em maisculo: ELEMENT, ATTLIST, ENTITY Subelementos separados por vrgula
Ex.:
elemento
elementos filhos
Rmulo C. Silva
Rmulo C. Silva
<?xml version=1.0 > <!DOCTYPE Email SYSTEM Email.dtd> <Email> <From> jose@yahoo.com.br</From> <To> joao@yahoo.com.br </To> <To> maria@hotmail.com</To> <Title> Teste de e-mail</Title> <Date> 20-10-2008</Date> <Message> texto no corpo do e-mail. </Message> nome do arquivo DTD </Email>
Rmulo C. Silva
DTD - textos
Um elemento pode conter texto, indicado pela palavra reservada #PCDATA Ex.:
<!ELEMENT Paragrafo (#PCDATA)> <Paragrafo> Aqui vem o texto. </Paragrafo>
Rmulo C. Silva
DTD - atributos
So separados da declarao dos elementos Ordem de declarao: nome do elemento, nome do atributo, tipo e informao de opcionalidade/default Informao de opcionalidade/default:
#REQUIRED : obrigatrio #IMPLIED: opcional #FIXED: valor fixo
Rmulo C. Silva
DTD - atributos
Usam a palavra reservada !ATTLIST Ex.:
valor default obrigatrio
<!ATTLIST Paragrafo Seguranca (normal, secreto) normal Id ID #REQUIRED nome do atributo Autor CDATA #IMPLIED>
tipo do atributo
opcional
Rmulo C. Silva
DTD - Entidades
Permitem separar um documento em vrios arquivos fsicos Permitem incluso de dados no-XML Permitem reutilizao de definies
Rmulo C. Silva
DTD - entidades
Declarao:
<!ENTITY nomeEntidade contedo entidade >
Referncia:
Uso dos caracteres & para incio e ; para fim &nomeEntidade;
Rmulo C. Silva
DTD - notation
Usada quando entidades querem se referir a arquivo externo cujo formato no XML.
O parser no valida os dados, e os dados so passados para outra aplicao validar Uso da palavra reservada NOTATION e NDATA NDATA indica que o arquivo de formato no XML.
<!DOCTYPE catalogo [ <!NOTATION jpeg SYSTEM "PictureManager.exe"> <!ENTITY capaCatalogo SYSTEM "capaCat.jpg" NDATA jpeg> <!ELEMENT catalogo (capaCatalogo, #PCDATA)> <!ELEMENT capaCatalogo EMPTY> <!ATTLIST capaCatalogo img ENTITY #REQUIRED> ]> <catalogo> <foto img="capaCatalogo"/> Aqui vem a descrio do catlogo. </catalogo>
jpeg est associado aplicao PictureManager
Rmulo C. Silva
DTD - Entidades
Entidade: cada unidade de informao que possui nome Entidade documento: a entidade que representa todo o documento. Declarao de entidade:
Deve vir no incio do documento
DTD - limitaes
No existe a noo de tipos de dados atmicos (int, float, etc.) No se pode especificar faixa de valores Tem sintaxe diferente de XML No manipula Namespaces
Rmulo C. Silva
Exerccios
Rmulo C. Silva
XSD
Elemento raiz chamado schema <xs:schema ...> ... </xs:schema> 2 grupos de elementos:
1o grupo: gerenciam a definio do prprio esquema (aparecem uma nica vez) 2o grupo: declaraes de elementos, atributos, definies de tipos.
Rmulo C. Silva
XSD
<?xml version=1.0 ?> <xs:schema xmlns:xs=http://www.w3.org/2000/10/XMLSchema targetNamespace=http://meuslivros.com.br xmlns=http://meuslivros.com.br > <xs:element name=catalogo> <xs:complexType> <xs:sequence> <xs:element name=livro minOccurs=0 maxOccurs=unbouded> <xs:complexType> Prefixo que <xs:sequence> <xs:element name=titulo type=xs:string/> identifica <xs:element name=autor type=xs:string /> o Namespace </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:sequence> Os elementos definidos neste XSD </xs:complexType> pertencem ao Namespace </xs:element> http://meuslivro.com.br </xs:schema>
Rmulo C. Silva
XSD
<?xml version=1.0 ?> <xs:schema xmlns:xs=http://www.w3.org/2000/10/XMLSchema targetNamespace=http://meuslivros.com.br xmlns=http://meuslivros.com.br > <xs:element name=catalogo> <xs:complexType> <xs:sequence> <xs:element name=livro minOccurs=0 maxOccurs=unbounded> <xs:complexType> <xs:sequence> <xs:element name=titulo type=xs:string/> <xs:element name=autor type=xs:string /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:sequence> Namespace default. Usado quando </xs:complexType> no schema no h referncia de um </xs:element> Namespace especfico </xs:schema>
Rmulo C. Silva
Rmulo C. Silva
Instncia XML:
<?xml version=1.0 ?> <catalogo xmlns:xsi=http://www.w3.org/2000/10/XMLSchemainstance xsi:noNamespaceSchemaLocation=catalogoLivros.xsd> ...
Rmulo C. Silva
XSD - Namespace
O atributo xmlns declara um Namespace
Pode ser identificado por um prefixo ou no
<xs:schema xmlns:a1=http://www.a1.com.br xmlns:a2=http://www.a2.org > <!-- agora vem as declaraes dos elementos --> ... </xs:schema>
Rmulo C. Silva
No obrigatrio coloc-los
O valor default para ambos unqualified
Rmulo C. Silva
Na instncia XML:
<?xml version="1.0" encoding="utf-8"?> <tns:livro xmlns:tns="http://meusLivros.com.br" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://meusLivros.com.br file:testeNamespace.xsd" categoria=romance> <tns:titulo>Dom Casmurro</tns:titulo> <tns:autor>Machado de Assis</tns:autor> </tns:livro>
elemento qualificado
Rmulo C. Silva
Na instncia XML
<?xml version="1.0" encoding="utf-8"?> <tns:livro xmlns:tns="http://meusLivros.com.br" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://meusLivros.com.br file:testeNamespace.xsd" tns:categoria=romance> <tns:titulo>Dom Casmurro</tns:titulo> <tns:autor>Machado de Assis</tns:autor> </tns:livro>
Rmulo C. Silva
XSD - comentrios
Comentrios vlidos em XML:
Rmulo C. Silva
Rmulo C. Silva
Tipos:
Primitivos: tipos pr-definidos (built in) Simples: criados pelo usurio a partir dos tipos pr-definidos Complexos: tipos envolvendo estruturas complexas criadas usando complexType
Rmulo C. Silva
Rmulo C. Silva
Rmulo C. Silva
Rmulo C. Silva
Rmulo C. Silva
Rmulo C. Silva
Rmulo C. Silva
XSD- sequence
<xs:element name=Email> <xs:complexType> <xs:sequence> <xs:element name=From type=xs:string/> <xs:element name=To type=xs:string/> <xs:element name=Title type=xs:string/> <xs:element name=Message type=xs:string/> </xs:sequence> </xs:complexType> </xs:element>
Rmulo C. Silva
XSD- choice
<xs:element name=publicacao> <xs:complexType> <xs:sequence> <xs:element name=ano type=xs:gYear /> <xs:choice> <xs:element name=livro type=xs:string /> <xs:element name=artigo type=xs:string /> </xs:choice> </xs:sequence> </xs:complexType> Ex. de XML correspondente: <publicacao> <ano> 1995</ano> <livro>Titulo do meu Livro</livro> </publicacao>
Rmulo C. Silva
XSD all
<xs:element name=instituicao> <xs:complexType> <xs:all> <xs:element name=universidade type=xs:string /> <xs:element name=departamento type=xs:string /> </xs:all> </xs:complexType> </xs:element> podem aparecer
Quando no usados tem valor igual a 1 Podem ser usados em elementos do tipo sequence e choice
Rmulo C. Silva
XSD - cardinalidade
<xs:element name=Email> <xs:complexType> <xs:sequence> <xs:element name=From type=xs:string/> <xs:element name=To type=xs:string minOccurs=1 maxOccurs=unbounded/> <xs:element name=Title type=xs:string/> <xs:element name=Message type=xs:string/> </xs:sequence> </xs:complexType> </xs:element>
Rmulo C. Silva
XSD - cardinalidade
<Email> <From>remetente@hotmail.com</From> <To>destinatario1@hotmail<To/> <To>destinatario2@hotmail<To/> <To>destinatario3@hotmail<To/> <To>destinatario4@hotmail<To/> <Title>titulo do e-mail</Title> <Message>corpo do email.</Message> </Email>
Rmulo C. Silva
Rmulo C. Silva
Rmulo C. Silva
XSD - group
<xs:schema ...> <xs:group name=endereco> <xs:sequence> <xs:element name=rua type=xs:string /> <xs:element name=numero type=xs:integer /> <xs:element name=cidade type=xs:string /> </xs:sequence> </xs:group> ... <xs:element name=cliente> <xs:complexType> <xs:sequence> <xs:element name=nome type=xs:string /> <xs:group ref=endereco /> </xs:sequence> </xs:complexType> </elment> <xs:element name=fornecedor> <xs:complexType> <xs:sequence> <xs:element name=razaoSocial type=xs:string /> <xs:group ref=endereco /> </xs:sequence> </xs:complexType> </xs:element> ... </xs:schema>
Rmulo C. Silva
Rmulo C. Silva
Rmulo C. Silva
Exerccios
Rmulo C. Silva
Tipos complexos:
Uso de complexContent Derivao por restrio (restriction) Derivao por extenso (extension)
Rmulo C. Silva
As facetas pattern, enumeration e whiteSpace podem ser aplicadas a todos os tipos simples Sugesto: consultar a especificao antes de usar !
Rmulo C. Silva
Rmulo C. Silva
Rmulo C. Silva
Ex.:
<xs:restriction base=decimal> <xs:totalDigits value=4/> <xs:fractionDigits value=2 /> </xs:restriction> Valores vlidos no XML:
1 12 1234 1.2 12.3 1.234 12.345
Rmulo C. Silva
12.34
Rmulo C. Silva
Rmulo C. Silva
Rmulo C. Silva
Rmulo C. Silva
Rmulo C. Silva
Rmulo C. Silva
XSD Unicidade
possvel indicar que o valor de um atributo ou elemento deve ser nico dentro de um certo escopo Uso de elemento unique
select Seleciona um conjunto de elementos field Identifica o campo que dever ser nico dentro do conjunto selecionado
XSD - Unicidade
<xs:element name=produtos > <xs:complexType> <xs:sequence minOccurs=0 maxOccurs=unbounded > <xs:element name=produto> <xs:complexType> <xs:simpleContent> <xs:extension base=xs:string <xs:attribute name=cod type=xs:string/> </xs:extension> <xs:simpleContent> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <xs:unique name=codProd > <xs:selector xpath=produto /> <xs:field xpath=cod /> </xs:unique> </xs:element>
Rmulo C. Silva
XSD- Unicidade
<?xml version="1.0" encoding="UTF-8"?> <produtos xsi:noNamespaceSchemaLocation="testeUnicidade.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"> <produto cod="xxx"> algum texto aqui. </produto> <produto cod="yyy"> outro texto. </produto> <produto cod="zzz"> mais texto </produto> </produtos>
Rmulo C. Silva
XSD - Unicidade
A palavra-reservada key pode ser usada no lugar de unique
Permite que o valor da chave pode ser usado em outro ponto do documento atravs de keyref keyref Funcionamento similar chave estrangeira em banco de dados
Rmulo C. Silva
XSD- Unicidade
<xs:element name="BookStore"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="Book"> <xs:complexType> <xs:sequence> <xs:element name="Title" type="xs:string" /> <xs:element name="Author" type="xs:string" /> <xs:element name="Date" type="xs:string" /> <xs:element name="ISBN" type="xs:string" /> <xs:element name="Publisher" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <xs:key name="PK"> <xs:selector xpath="Book" /> <xs:field xpath="ISBN" /> </xs:key> </xs:element>
Rmulo C. Silva
Rmulo C. Silva
XPath
Permite referenciar um elemento especfico dentro de um documento Uso de expresses semelhantes a caminhos de arquivos e diretrios Usado nos elementos key e unique para indicar caminho especfico Usado em instrues XSLT para fazer a converso dos elementos para algum tipo de sada (HTML, PDF, etc.)
Rmulo C. Silva
XPath
<?xml version="1.0" encoding="utf-8"?> <catalogo> <Livro categoria="romance"> <titulo>Dom Casmurro</titulo> <autor>Machado de Assis</autor> </Livro> <Livro categoria="filosofia"> <titulo>O Discurso do Mtodo</titulo> <autor>Rene Descartes</autor> </Livro> </catalogo>
Rmulo C. Silva
XPath
raiz catalogo elemento raiz
livro
categoria=romance
livro
categoria=filosofia
titulo
autor
titulo
autor
Dom Casmurro
Machado de Assis
O Discurso do Mtodo
Rene Descartes
Rmulo C. Silva
XPath
/ catalogo /catalogo
livro
categoria=romance
/catalogo/livro/@categoria
titulo
autor
/catalago/livro/autor
Dom Casmurro
Machado de Assis
Rmulo C. Silva
XPath uso de //
<?xml version="1.0" encoding="utf8"?> <catalogo> <Livro categoria="romance"> <titulo>Dom Casmurro</titulo> <autor>Machado de Assis</autor> <dadosTecnicos> <paginas>280</paginas> <preco>50</preco> </dadosTecnicos> </Livro> <Livro categoria="filosofia"> <titulo>O Discurso do Mtodo</titulo> <autor>Rene Descartes</autor> </Livro> </catalogo>
//nomeElemento
Procura por nomeElemento no interessando os antecessores Exs.: //titulo <titulo> Dom Casmurro </titulo> <titulo>O Discurso do Mtodo </titulo> /catalogo//paginas <paginas>280</paginas>
Rmulo C. Silva
Rmulo C. Silva
XPath - predicados
Podem ser usados para testar se um determinado elemento est presente ou tem um valor especfico Exs:
/catalogo/livro[dadosTecnicos]
<Livro categoria="romance"> <titulo>Dom Casmurro</titulo> <autor>Machado de Assis</autor> <dadosTecnicos> <paginas>280</paginas> <preco>50</preco> </dadosTecnicos> </Livro>
Rmulo C. Silva
XPath predicados
/catalogo/livro[autor=Rene Descartes]
<Livro categoria="filosofia"> <titulo>O Discurso do Mtodo</titulo> <autor>Rene Descartes</autor> </Livro>
/calalogo/livro[@categoria=romance]
<Livro categoria="romance"> <titulo>Dom Casmurro</titulo> <autor>Machado de Assis</autor> <dadosTecnicos> <paginas>280</paginas> <preco>50</preco> </dadosTecnicos> </Livro>
Rmulo C. Silva
XPath - predicados
Outras funes:
position() Retorna a localizacao do elemento testado Ex.: /catalogo/livro[position()=2]
<Livro categoria="filosofia"> <titulo>O Discurso do Mtodo</titulo> <autor>Rene Descartes</autor> </Livro>
Rmulo C. Silva
XSD
<xs:element name=publicacao > <xs:complexType> <xs:choice> <xs:element name=artigo type=xs:string/> <xs:element name=livro type=xs:string/> <xs:element name=tese type=xs:string /> </xs:choice> </xs:complexType> </xs:element>
Rmulo C. Silva
XSD:
<xs:element name=publicacoes > <xs:complexType> <xs:choice minOccurs=0 maxOccurs=unbounded> <xs:element name=artigo type=xs:string/> <xs:element name=livro type=xs:string/> <xs:element name=tese type=xs:string /> </xs:choice> </xs:complexType> </xs:element>
Rmulo C. Silva
XSD
<xs:element name="paragrafo"> <xs:complexType mixed="true"> <xs:sequence> <xs:choice maxOccurs="unbounded"> <xs:element minOccurs="0" maxOccurs="unbounded" name="italico" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="unbounded" name="negrito" type="xs:string" /> </xs:choice> </xs:sequence> </xs:complexType> </xs:element>
Rmulo C. Silva
Rmulo C. Silva
Documento
Elemento
Atributo
Texto
CDATASection
Comentrio
Rmulo C. Silva
DOM
O elemento documentElement o nvel mais alto da rvore
Pode conter ramificaes (nodos)
Um nodo pode conter um filho (childNode) dependendo de sua definio Uma propriedade de nodo retornar um valor (ou lista de valores).
Ex.: childNodes retorna uma relao de nodos (NodeList) contendo todos os nodos-filhos.
Rmulo C. Silva
DOM
Propriedades tpicas dos nodos:
attributes: mapa de nomes de nodos contendo todos os atributos deste nodo childNodes: lista (NodeList) com todos nodosfilho firstChild: retorna o primeiro nodo-filho deste nodo lastChild: retorna o ltimo nodo-filho deste nodo nextSibling: retorna o prximo nodo-irmo. nodeName: retorna o nome do nodo (nodeName)
Rmulo C. Silva
DOM
Propriedades tpicas dos nodos (cont.)
nodeType: retorno o tipo do nodo (nodeType) soba a forma de um nmero nodeValue: retorna ou ajusta o valor deste nodo ownerDocument: retorno o nodo raiz do documento parentNode: retorno o nodo-pai deste nodo previousSibling: retorna o nodo-irmo anterior
Rmulo C. Silva
DOM
Mtodos para utilizao com nodos:
appendChild(novoFilho): acrescenta um novoFilho ao final dos nodos-filhos deste nodo cloneNode(booleano): retorna um clone exato deste nodo. Se o parmetro for true, o nodo clonado tambm ter todos os nodos-filhos hasChildNodes(): retorna true se o nodo tiver quisquer nodos-filhos
Rmulo C. Silva
DOM
Mtodos para utilizao com nodos (cont.)
insertBefore(novoNodo, NodoDeRef): insere um novoNodo antes do nodo NodoDeRef, j existente removeChild(nomeDoNodo): remove o nodo nomeDoNodo replaceChild(novoNodo,antigoNodo): substitui o antigoNodo pelo novoNodo.
Rmulo C. Silva
DOM
Tipos de nodo e os tipos de nodo que podem conter:
Document: Element (no mximo um), ProcessingInstruction, Comment e DocumentType DocumentFragment: Element, ProcessingInstruction, Comment, Text, CDATASection e EntityReference
Rmulo C. Silva
DOM
Tipos de nodo e os tipos de nodo que podem conter (cont.):
EntityReference: Element, ProcessingInstruction, Comment, Text, CDATASection e EntityReference Element: Element, ProcessingInstruction, Comment, Text, CDATASection e EntityReference
Rmulo C. Silva
DOM
Tipos de nodo com os respectivos tipos de nodo que podem conter (cont.):
Attr: Text e EntityReference Entity: Element, ProcessingInstruction, Comment, Text, CDATASection e EntityReference
Rmulo C. Silva
Rmulo C. Silva
Rmulo C. Silva
Rmulo C. Silva
#comment #document #document-fragment Nome do tipo do documento Nome da Tag Nome da Entidade Nome da entidade referenciada Nome da Notation Target (Destino)
null null null null NamedNode Map null null null null
8 9 11 10 1 6 5 12 7
Text
#text
null
Rmulo C. Silva
JDOM
Pacotes geralmente usados:
import import import import import java.io.*; java.util.*; javax.xml.parsers.*; org.xml.sax.*; org.w3c.dom.*;
JDOM - exemplo
import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import java.io.File; import org.w3c.dom.Document; ... File docFile = new File(NomeArquivo.xml"); Document doc = null; DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); doc = db.parse(docFile); // efetua o parsing ...
Rmulo C. Silva
JDOM - exemplo
...
Element root = doc.getDocumentElement(); for (Node filho= root.getFirstChild(); filho != null; filho = filho.getNextSibling()) { System.out.println(filho.getNodeName()+" = "+filho.getNodeValue()); }
...
Rmulo C. Silva
Rmulo C. Silva
SAX - interfaces
Interfaces:
Attributes ContentHandler DTDHandler EntityResolver ErrorHandler XMLFilter XMLReader Locator
Rmulo C. Silva
SAX - classes
Classes:
InputSource AttributesImpl DefaultHandler LocatorImpl NamespaceSupport ParseAdapter XMLFilterImpl XMLReaderAdapter XMLReaderFactory
Rmulo C. Silva
SAX
Para utilizar SAX preciso criar uma instncia de um analisador. O analisador gera eventos em uma ordem equivalente a uma busca em profundidade (depth-first)
Rmulo C. Silva
Rmulo C. Silva
Rmulo C. Silva
Rmulo C. Silva
SAX - exemplo
XMLReader xmlReader = null; SAXParserFactory spfactory = SAXParserFactory.newInstance(); SAXParser saxParser = spfactory.newSAXParser(); // obtem um Parser xmlReader = saxParser.getXMLReader(); // configura o tratador de contedo xmlReader.setContentHandler(new XMLHandler()); // configura o tratador de erros xmlReader.setErrorHandler(new XMLHandler()); InputSource source = new InputSource(Arquivo.xml");
DOM x SAX
DOM:
Usado quando se precisa fazer acessos aleatrios aos elementos Consome mais memria (representao da rvore) Usado quando necessita caminhar na rvore inteira Sugesto: procurar definir XMLs que usem mais atritutos e menos elementos
SAX:
Usado mais quando os dados so tratados como fluxo de dados
Rmulo C. Silva
Bibliografia
Graves, M. Projeto de Banco de Dados com XML. Ed. Makron Books, 2003. Bradley, N. The XML Schema Companion. Ed. Addison-Wesley, 2004. Rocha, H. XML na Gesto de Informaes. In: Integrao total de negcios usando XML, SUCESU-SP, 2002. Maurcio, C. R. M.; Peres, F.F.F. Linguagens de Estruturao e Apresentao de Contedo e Mecanismo de Transformao para Objetos. 2007
Rmulo C. Silva
Bibliografia
Tittel, E. Teoria e Problemas de XML. Bookman, 2003
Rmulo C. Silva
Sites
http://www.w3c.org Braganholo, V. P. Introduo ao XML. Disponvel em http://www.dcc.ufrj.br/~braganholo/ http://www.w3schools.com Baptista, Cludio. XML eXtensible Markup Language. Disponvel em http://www.lsi.dsc.ufcg.edu.br
Rmulo C. Silva