Sei sulla pagina 1di 21

XML e DTD

Ferramentas de Leitura e Escrita - DOM e SAX


XML
EXtensible Markup Language

Linguagem feita para armazenamento e transporte de dados

Legível para humanos e maquinas


Exemplo
<?xml version="1.0" encoding="UTF-8"?>

<breakfast_menu>

<food>

<name>Belgian Waffles</name>

<price>$5.95</price>

<description>Our famous Belgian Waffles with plenty of real maple syrup</description>

<calories>650</calories>

</food>

</breakfast_menu>
DTD
Document Type Definition

Pode ser usado para validar o XML


Exemplo
note.dtd

<!ELEMENT note (to,from,heading,body)>

<!ELEMENT to (#PCDATA)>

<!ELEMENT from (#PCDATA)>

<!ELEMENT heading (#PCDATA)>

<!ELEMENT body (#PCDATA)>


Uso
WEB

MOBILE

OUTROS
Ferramentas
SAX

DOM
SAX
Simple API for XML

Parser de XML

Eventos

Java, Python, C++

Só leitura

Sequencial
Exemplo - Pt.1
import java.io.FileReader;

import org.xml.sax.XMLReader;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.helpers.XMLReaderFactory;
import org.xml.sax.helpers.DefaultHandler;

public class MySAXApp extends DefaultHandler


{

public static void main (String args[])


throws Exception
{
XMLReader xr = XMLReaderFactory.createXMLReader();
MySAXApp handler = new MySAXApp();
xr.setContentHandler(handler);
xr.setErrorHandler(handler);

// Parse each file provided on the


// command line.
for (int i = 0; i < args.length; i++) {
FileReader r = new FileReader(args[i]);
xr.parse(new InputSource(r));
}
}
Exemplo - Pt.2
public MySAXApp ()
{
super();
}
// Event handlers.

public void startDocument ()


{
System.out.println("Start document");
}

public void endDocument ()


{
System.out.println("End document");
}

public void startElement (String uri, String name,


String qName, Attributes atts)
{
if ("".equals (uri))
System.out.println("Start element: " + qName);
else
System.out.println("Start element: {" + uri + "}" + name);
}
Exemplo - PT.3
public void endElement (String uri, String name, String qName)
{
if ("".equals (uri))
System.out.println("End element: " + qName);
else
System.out.println("End element: {" + uri + "}" + name);
}

public void characters (char ch[], int start, int length)


{
System.out.print("Characters: \"");
for (int i = start; i < start + length; i++) {
switch (ch[i]) {
case '\\':
System.out.print("\\\\");
break;
case '"':
System.out.print("\\\"");
break;
case '\n':
System.out.print("\\n");
break;
case '\r':
System.out.print("\\r");
break;
case '\t':
System.out.print("\\t");
break;
default:
System.out.print(ch[i]);
break;
}
}
System.out.print("\"\n");
}
}
Quando usar SAX?
Quando o arquivo que você for “parsear” é muito grande.

Por que o SAX não salva trabalho com eventos e não salva na
memória.
DOM
Document Object Model

Leitura e Escrita

Árvores

Orientado à objeto
Exemplo
<!>

<script>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200)
{
myFunction(xhttp);
}
};
xhttp.open("GET", "breakfast_menu.xml", true);
xhttp.send();

function myFunction(xml) {
Algumas instruções
- xmlDoc.getElementsByTagName(nome_de_algum_campo) = salva todo o vetor de dados desse campo em uma
variavel

- x.childNodes: salva o vetor de filhos do nó X em uma variavel

- y.nodeValue: salva o valor do nó y em um variavel

- z.firstChild: salva o nó do primeiro filho de z


Quando usar DOM?
DOM é mais prático quando o documento que você deseja ler e
alterar é pequeno.

Além de ser bem mais prático do que SAX.


Importância de PARSEAR
Leitura de arquivos na WEB

Programação mobile

Leitura de dados
Atividade
Dado o documento XML, faça:

A) A leitura de todos os jogos da loja e imprima o jogo mais


barato e seu preço.

B) Faça uma relação declínio de preço, suponha todos jogos


terem valor inicial de 200, e diga o jogo com maior
declinio.

DESAFIO: Diga o jogo mais caro da Rockstar, Bethesta e


Valve.
Resposta - letra A
Letra A

Letra B

Desafio
Links
http://www.w3schools.com/xml/dom_intro.asp

http://www.caelum.com.br/apostila-java-testes-xml-design-pat
terns/trabalhando-com-xml/#4-3-lendo-xml-com-java-de-maneira
-dificil-o-sax

http://www.saxproject.org/quickstart.html

http://br.ccm.net/faq/14043-dom-document-object-model-e-sax-
simple-api-for-xml
Dúvidas?

Potrebbero piacerti anche