Você está na página 1de 18

DTD XSD - XLS DOM - SAX

PROGRAMAO CLIENTE - SERVIDOR

Equipe
Alessandra Augusto Bruno Glauber Matheus Paulo

DTD - Document Type Definition


Definio A referncia de um documento: DTD Internas DTD Externas Propriedades (Estrutura) Elementos Atributos Entidades Porque usar o DTD

Definio
Podemos definir como um conjunto de regras que determina quais entidades e tipos de dados faro parte de um documento XML.

Referncia no XML
DTD Internas
<!DOCTYPE elemento-principal [elementos-contido-no-principal]>

DTD Externas
<!DOCTYPE elemento-principal SYSTEM "nome_do_arquivo">

DTD Externa
Arquivo XML: <?xml version="1.0"?> <!DOCTYPE pessoa SYSTEM arquivos_dtd.dtd"> <pessoa> <nome>Sr. Fulano</nome> <sexo>Masculino</sexo> <idade>35</idade> </pessoa> Arquivo DTD arquivo_dtd.dtd": <!ELEMENT pessoa (nome,sexo,idade)> <!ELEMENT nome (#PCDATA)> <!ELEMENT sexo (#PCDATA)> <!ELEMENT idade (#PCDATA)>

DTD Interna
Arquivo XML: <?xml version="1.0"?> <!DOCTYPE pessoa [ <!ELEMENT pessoa (nome,sexo,idade)> <!ELEMENT nome (#PCDATA)> <!ELEMENT sexo (#PCDATA)> <!ELEMENT idade (#PCDATA)> ]> <pessoa> <nome>Sr. Fulano</nome> <sexo>Masculino</sexo> <idade>35</idade> </pessoa>

Propriedades (Estrutura)
Elementos
Elementos so os principais blocos de construo de um documento XML, os mesmos podem conter textos, outros elementos, ou estar vazio. Exemplo: <pessoa> <nome>Sr. Fulano</nome> </pessoa> Podendo os mesmos serem declarados das seguintes maneiras: <!ELEMENT elemento-pai (elementos-filhos)> <!ELEMENT elemento (propriedade)> <!ELEMENT elemento (propriedade | elemento-filho | elemento-filho)*> Propriedade: EMPTY #PCDATA ANY +" *" ?" |" Elemento vazio. Aponta dados que sero analisados. Pode conter qualquer combinao de dados analisveis. Torna obrigatrio pelo menos uma ocorrncia do elemento. Permite zero ou mais ocorrncias de um elemento. Permite zero ou um ocorrncia de um elemento. Entre dois elementos, permite a escolha de um para uso.

XSD - XML Schema Definition


Definio
elementos complexos e simples

A referncia de um documento: Propriedades XSD vs DTD


Exemplo de Erros DTD e XSD

DOM Document Object Model


Definio Tipos DOM ( Core HTML) Estrutura (Arvore)
Documento Elemento Atributo Texto

Node Parents, Children, and Siblings Mtodos ( Exemplos )

SAX Simple API for XMl


Definio Caractersticas Interface SAX Eventos disparados pelo Parse SAX
StartDocument / EndDocument / StartElement EndElement / Caracters / Ignorable Whitespace / ProcessingInstruction /SetDocumentLocator

DOM vs SAX

Definio
SAX (Simple API for XML)
um conjunto de bibliotecas escritas em java que permite o acesso a documentos XML para obter o contedo desejado.

Caractersticas
Baseada em eventos(abertura e fechamento de tags) Acesso de maneira serial, no permitindo a leitura de trechos anteriores nem saltos a trechos posteriores No carrega na memria, impossibilitando a alterao do documento, entretanto se torna uma alternativa a documentos que se carregados na memria tornariam o processamento mais demorado(documentos grandes e pouca memria)

Interface SAX

SAX 2.0
Interface XMLReader - Implementada pelo parser propriamente dito. Interface ContentHandler - Manipula eventos bsicos de marcao - incio de documento, incio de elemento, etc. Interface Attributes - Manipula atributos Interface ErrorHandler - Manipula erros Interface EntityResolver -Manipula entidades Interface Locator - Localizao de cada erro - linha/coluna Interface DTDHandler - Eventos relacionados a DTDs Interface XMLFilter - Filtro XML

Classe DefaultHandler (SAX 2.0)


Implementa as interfaces Sobrescreve os seguintes mtodos

EntityResolver DTDHandler ContentHandler ErrorHandler

startDocument() e endDocument() startElement() e endElement characters() ErrorHandler

com um comportamento default.

Start Element :company Start Element :staff Exemplo Start Element :firstname First Name : yong SAXParserFactory factory = SAXParserFactory.newInstance(); End Element :firstname SAXParser saxParser = factory.newSAXParser(); Start Element :lastname DefaultHandler handler = new DefaultHandler() Last Name : mook kim ....... End Element :lastname public void startElement(String uri, String localName,String Start Element :nickname qName,Attributes attributes) throws SAXException { Nick Name : mkyong System.out.println("Start Element :" + qName); End Element :nickname if (qName.equalsIgnoreCase("FIRSTNAME")) { Start Element :salary bfname = true; Salary : 100000 ....... public void characters(char ch[], int start, int length) throws End Element :salary End Element :staff SAXException { if (bfname) { System.out.println("First Name : " + new String(ch, start, length)); bfname = false; } ........ saxParser.parse("c:\\Bruno\\teste.xml", handler);

Start Element :staff Start Element :firstname First Name : low End Element :firstname Start Element :lastname Last Name : yin fong End Element :lastname Start Element :nickname Nick Name : fong fong End Element :nickname Start Element :salary Salary : 200000 End Element :salary End Element :staff End Element :company

Exemplo
public class ReadXMLFile { public static void main(String argv[]) { try { SAXParserFactory factory = SAXParserFactory.newInstance();

@Override public void endElement(String uri, String localName, String qName) throws SAXException {

System.out.println("End Element :" + qName);


} public void characters(char ch[], int start, int length) throws SAXException { if (bfname) { System.out.println("First Name : " + new String(ch, start, length)); bfname = false; } if (blname) { System.out.println("Last Name : " + new String(ch, start, length)); blname = false; } if (bnname) { System.out.println("Nick Name : " + new String(ch, start, length)); bnname = false; } if (bsalary) { System.out.println("Salary : " + new String(ch, start, length)); bsalary = false; } } }; saxParser.parse("c:\\Bruno\\teste.xml", handler); } catch (Exception e) { e.printStackTrace(); } } }

SAXParser saxParser = factory.newSAXParser();


DefaultHandler handler = new DefaultHandler() { boolean bfname = false; boolean blname = false; boolean bnname = false; boolean bsalary = false; @Override

public void startElement(String uri, String localName,String qName,Attributes attributes) throws SAXException { System.out.println("Start Element :" + qName); if (qName.equalsIgnoreCase("FIRSTNAME")) { bfname = true; } if (qName.equalsIgnoreCase("LASTNAME")) { blname = true; } if (qName.equalsIgnoreCase("NICKNAME")) { bnname = true; } if (qName.equalsIgnoreCase("SALARY")) { bsalary = true; } }

Sada
Start Element :company Start Element :staff Start Element :firstname First Name : yong End Element :firstname Start Element :lastname Last Name : mook kim End Element :lastname Start Element :nickname Nick Name : mkyong End Element :nickname Start Element :salary Salary : 100000 End Element :salary End Element :staff Start Element :staff Start Element :firstname First Name : low End Element :firstname Start Element :lastname Last Name : yin fong End Element :lastname Start Element :nickname Nick Name : fong fong End Element :nickname Start Element :salary Salary : 200000 End Element :salary End Element :staff End Element :company

SAX versus DOM


DOM
Modelo baseado em rvore armazena o documento inteiro numa hierarquia de document nodes Documentos grandes e pouca mmoria aumentam o tempo de processamento Prov facilidades para adicionar e remover nodes Invoca mtodos quando markup (tag) encontrada Maior performance do que DOM Menos overhead de memria do que DOM Tipicamente usado para ler documentos (no para modific-los)

SAX

Você também pode gostar