Baixe o app para aproveitar ainda mais
Prévia do material em texto
XML Manipulação 1 Java e XML • O que é um Parser? – Um parser é um pedaço de código que faz a leitura de um documento XML e analisa a sua estrutura. 2 Java e XML • Como utilizar um parser? – Passos • criar um objeto do tipo parser; • Aponta o parser para o seu documento XML; • Processa os resultados. 3 Java e XML • Tipos de parsers – Os parsers são organizados em algumas categorias: • Parsers que fazem validação e parsers que não fazem validação • Parsers que suportam a linguagem de XML Schema • Parsers que suportam o DOM (Document Object Model) • Parsers que suportam o SAX (Simple API for XML) 4 Categorias • Parsers que fazem validação e parsers que não fazem validação – Três tipos diferentes de XML • Documentos bem formados, que seguem as regras básicas do XML; • Documentos válidos, que são documentos bem formados, além de seguirem um conjunto de regras especificados em um DTD ou XML Schema; • Documento inválidos: os que não seguem as regras dos documentos acima. 5 Categorias • Parsers que fazem validação e parsers que não fazem validação – Mas por qual razão deveria utilizar um parser que não faz validação? • Duas boas razões: – velocidade – eficiência. 6 Categorias • Parsers que suportam a linguagem de XML Schema – A especificação original do XML definiu o DTD como a maneira de definir como um documento XML deveria ser. Os DTDs têm uma sintaxe diferente dos documentos XML, dificultando o entendimento em algumas vezes. – Para contornar essas limitações, O W3C criou a linguagem XML Schema. 7 Categorias • Parsers que suportam o DOM (Document Object Model) – O DOM é uma recomendação oficial do W3C. É definida uma interface que permite aos programas acessarem e fazer updates na estrutura do XML. 8 Categorias • parsers que suportam o SAX (Simple API for XML) – SAX é uma alternativa para se trabalhar com documentos XML. Foi designado para ter uma memória menor, mas deixa mais trabalho para o programador. O SAX e o DOM dão complementares, cada um é apropriado para diferentes ocasiões. 9 A interface DOM • DOM é uma interface de programação, baseada no modelo de objetos, que permite a manipulação e transformação de documentos em XML. • A interface DOM manipula documentos XML na forma de uma estrutura em árvore. • Quando um documento é carregado na memória do computador, suas estruturas podem ser lidas e manipuladas através do objeto DOM. 10 A interface DOM • A interface DOM faz a representação do documento XML na forma de uma árvore de objetos, onde cada nó da árvore representa um componente do documento. 11 A interface DOM • O modelo implementado pela interface DOM é a forma mais flexível para manipulação do conteúdo de um documento XML. • Este modelo não é limitado pela ordem em que as estruturas do documento são processadas, logo é possível navegar pelo documento em qualquer ordem. 12 A interface DOM 13 A interface DOM • O DOM define algumas sub-interfaces da interface Node: – Element: representa um elemento XML – Attr: representa um atributo do elemento XML – Text: é o conteúdo de um elemento. Isso significa que um elemento com informação do tipo texto contém um filho do tipo nó de texto – Document: represente todo o documento XML. Apenas um objeto Document existe em cada XML que você faz o parse. Dado um objeto Document, você pode saber qual o elemento raiz da árvore DOM; a partir da raiz, você pode usar as funções da interface DOM para ler a manipular a árvore XML. 14 Exemplo XML e DOM 15 Exemplo XML e DOM 16 XML em Java com a API DOM • Requisitos – JDK 1.4 ou superior – Editor de texto ou uma IDE Java de sua escolha 17 XML em Java com a API DOM Exemplo de XML 18 XML em Java com a API DOM • Para trabalhar com a informação de um arquivo XML, é necessário primeiro fazer o parse para criar um objeto Document. • Como o objeto Document é uma interface, não podemos instanciar diretamente. • Geralmente, utilizamos uma Factory. • O processo exato pode variar de implementação para implementação, mas as ideias são as mesmas. 19 XML em Java com a API DOM • A figura abaixo exemplifica o processo de parsear um XML com a API DOM (fonte: Oracle): 20 Passos • Criar um DocumentBuilderFactory: este objeto cria um DocumentBuilder • Criar um DocumentBuilder: este objeto faz o parse para criar um objeto do tipo Document • Parsear o arquivo para criar um objeto Document. 21 Exemplo • //fazer o parse do arquivo e criar o documento XML – DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); – DocumentBuilder db = dbf.newDocumentBuilder(); – Document doc = db.parse(arquivoXML); 22 Passo 1 • Depois de realizar o parser no documento e o objeto Document é criado, a aplicação pode explorar a estrutura. //Passo 1: obter o elemento Element raiz = doc.getDocumentElement(); System.out.println(“elemento raiz é: “+ raiz.getNodeName()); • getNodeName() 23 Passo 2 • Após a determinação do elemento raiz, podemos obter a lista de elementos filhos. • O DOM fornece um tipo especial de interface de coleção chamada NodeList usada para referenciar uma lista de referências do tipo Node. 24 Exemplo XML • <?xml version="1.0" encoding="UTF-8" standalone="no"?> <pessoas> <pessoa id="1"> <nome>João</nome> <peso>95.3</peso> <altura>1.95</altura> </pessoa> </pessoas> 25 Passo 2 //Passo 2: localizar os elementos filhos da agenda NodeList listaPessoas = raiz.getElementsByTagName(”pessoa”); 26 Passo 3 //Passo 3: obter os elementos de cada elemento contato for (int i=0; i < listaPessoas.getLength(); i++) { //como cada elemento do NodeList é um nó, //precisamos fazer o cast Element pessoa= (Element) listaPessoas.item(i); } 27 Passo 4 //Passo 4: obter o atributo id do contato Attr id = pessoa.getAttributeNode(“id”); System.out.println(“Pessoa id: “ + id.getNodeValue()); 28 Passo 5 //Passo 5: obtém o nome do contato • NodeList tagNome = tagPessoa.getElementsByTagName("nome"); • System.out.println("Nome: " + tagNome.item(0).getTextContent()); • NodeList tagPeso = tagPessoa.getElementsByTagName("peso"); • System.out.println("Peso: " + tagPeso.item(0).getTextContent()); • NodeList tagAltura = tagPessoa.getElementsByTagName("altura"); • System.out.println("Altura: " + tagAltura.item(0).getTextContent()); 29 Escrevendo em um XML • Passo 1 – Criando o elemento que será adicionado Element novaPessoa = doc.createElement("pessoa"); novaPessoa.setAttribute("id", "3"); 30 Escrevendo em um XML • Passo 2 – Criando os elementos filhos do nó à ser inserido: Element novoNome = doc.createElement("nome"); novoNome.setTextContent("Pedro"); Element novoPeso = doc.createElement("peso"); novoPeso.setTextContent("190"); Element novaAltura = doc.createElement("altura"); novaAltura.setTextContent("1.95"); 31 Escrevendo em um XML • Passo 3 – Adicionando as tags recem criadas ao elemento que será inserido: novaPessoa.appendChild(novoNome); novaPessoa.appendChild(novoPeso); novaPessoa.appendChild(novaAltura); 32 Escrevendo em um XML • Passo 4 – Adicionando o novo elemento ao XML raiz.appendChild(novaPessoa); 33 Escrevendo o novo elemento no Arquivo XML DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(new FileOutputStream("pessoa.xml")); TransformerFactory transFactory = TransformerFactory.newInstance(); Transformer transformer = transFactory.newTransformer();transformer.transform(source, result); 34 35 Projeto • Criar o programa de Estoque de uma livraria. – O programa deve realizar o CRUD básico de obtenção de novos livros e sua persistência deve ser a partir de um documento XML. – Modele o arquivo XML e desenvolva a aplicação com a linguagem java e a API DOM recém estudada. – Criar a árvore do XML. • Obs: CRUD – Operações básicas em um sistema: Inserir, Remover, Listar e Alterar os produtos (Livros). 36
Compartilhar