Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
<xml:sax.dom />
Helder da Rocha
www.argonavis.com.br
SAX ou DOM?
SAX
Gasta menos memria
Mais simples menos recursos disponveis
Ideal para aplicaes simples que no precisam manipular
com toda a rvore de objetos
DOM
Em grandes documentos e hierarquias profundas exige
mais recursos
Fornece funes que permitem ter muito controle sobre
os dados
a nica opo para manipulao no cliente
APIs disponveis em vrias linguagens
Java, VB, C, JavaScript (apenas DOM)
3
DOM
Document Object Model
Objetivo: oferecer uma interface de programao
Serve para
criar um novo documento XML
navegar na rvore XML
modificar, remover ou adicionar ns (elementos,
atributos, texto, comentrios, PIs, etc.)
SAX
Simple API for XML
Baseada em eventos
Dispara eventos durante processamento do
documento
Exemplos de eventos
inicio e fim do documento
incio e fim do elemento (pode-se descobrir qual)
n de caractere
n de comentrio
...
SAX: operaes
Se um processador SAX receber o documento ...
<carta>
<mensagem id="1">Bom dia!</mensagem>
</carta>
DOM: operaes
Leitura
Passo 1: carregar o documento e identificar os tokens
Passo 2: identificar elementos e outros ns (pode usar SAX)
Passo 3: montar a rvore (pode ser feito durante o passo 2)
Alterao
Localiza o n de referncia
Remove, altera, muda posio, cria n antes ou depois.
Criao
Cria raiz; cria elemento raiz; cria elementos filho e
atributos; cria ns de texto
Monta rvore: coloca atributos em elementos, coloca ns
de texto em elementos, coloca elementos filho em
elementos pai, coloca elemento raiz na raiz
9
10
DOM: Hierarquia
DocumentFragment
Document
Text
CDATASection
CharacterData
Attr
Comment
Element
Node
DocumentType
NodeList
Notation
NamedNodeMap
Entity
EntityReference
ProcessingInstruction
11
DOM: navegao
DOM usa constantes para identificar tipos de n
(nodeType)
Constante (opcional)
Tipo
valor
ELEMENT_NODE
Element
ATTRIBUTE_NODE
Attr
TEXT_NODE
Text
CDATA_SECTION_NODE
CDATASection
ENTITY_REFERENCE_NODE
EntityReference
ENTITY_NODE
Entity
PROCESSING_INSTRUCTION_NODE ProcessingInstruction
COMMENT_NODE
Comment
DOCUMENT_NODE
Document
DOCUMENT_TYPE_NODE
DocumentType
DOCUMENT_FRAGMENT_NODE
DocumentFragment
NOTATION_NODE
Notation
1
2
3
4
5
6
7
8
9
10
11
12
12
ou
Java JAXP
Criar uma instncia a patir de DocumentBuilderFactory
13
integrao HTML-XML
Sintaxe:
<xml id="identificador">
... cdigo XML ..
</xml>
Fonte: www.xml101.com
15
<html>
<body>
<xml id="cdcat"
src="cd_catalog.xml"></xml>
<table border="1"
datasrc="#cdcat">
<tr>
<td><span datafld="ARTIST"></span></td>
<td><span datafld="TITLE"></span></td>
</tr>
</table>
</body>
</html>
Fonte: www.xml101.com
cd_catalog.xml
16