Índice

Objetivo

O objetivo deste guia é demonstrar a técnica padrão para manipulação de arquivos xml dentro dos scripts customizados do Fluig.

Neste exemplo carregaremos um xml externo ao Fluig via java e faremos a leitura e manipulação do mesmo via javascript.

O xml que será exportado

O xml que estaremos carregado é uma representação de catálogo de cds

<CATALOG>
 <CD>
  <TITLE>Empire Burlesque</TITLE>
  <ARTIST>Bob Dylan</ARTIST>
  <COUNTRY>USA</COUNTRY>
  <COMPANY>Columbia</COMPANY>
  <PRICE>10.90</PRICE>
  <YEAR>1985</YEAR>
 </CD>
 <CD>
  <TITLE>Hide your heart</TITLE>
  <ARTIST>Bonnie Tyler</ARTIST>
  <COUNTRY>UK</COUNTRY>
  <COMPANY>CBS Records</COMPANY>
  <PRICE>9.90</PRICE>
  <YEAR>1988</YEAR>
 </CD>
</CATALOG>


Esta é apenas parte do conteúdo do arquivo xml que será consumido neste exemplo . Note que ele possui três camadas : A primeira é representada pela tag <catalog> e representa a coleção inteira de cds. No segundo nível temos a tag <CD> que representa um CD de todo o catálogo. As outras tags internas a a tag CD representam os dados do CD e formam a terceira camada deste exemplo. A compreensão dessa estruturação se faz necessária para entender o exemplo como um todo.

Para verificar o conteúdo completo do xml clique neste link.

Carregando o conteúdo do xml para uma variável javascript.

O próximo passo é carregar o conteúdo desse xml para uma variável javascript . Para isso faremos a carga de alguns objetos java para conseguirmos carregar o xml (funções do pacote java.net.URL).

var url = new java.net.URL("http://www.w3schools.com/xml/cd_catalog.xml");
var connection = url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Accept", "text/plain");
if (connection.getResponseCode() != 200) {
	throw "Failed : HTTP error code : " + connection.getResponseCode();
}
var br = new java.io.BufferedReader(new java.io.InputStreamReader(connection.getInputStream()));

O código acima ir carregar para variável br o conteúdo do xml provindo do endereço www.w3schools.com/xml/cd_catalog.xml . Note que existem tratamentos para situações aonde não foi possivel carregar o documento (getResponseCode() != 200) . Atente-se a esses tratamentos para retornar uma mensagem de erro amigável para o usuário dependo do momento e local aonde esta técnica é utilizada . Antes de mandarmos para o parser javascript teremos que fazer alguns tratamentos e este será o nosso próximo passo.

Removendo informações desnecessárias para o parser xml javascript.

Antes de enviarmos para o parser será necessário remover algumas tags ou informações que não são aceitas pelo parser xml do javascript. Abaixo temos uma demonstração do bloco que remove esses itens em nosso xml de exemplo.

var result = "";
while ((output = br.readLine()) != null) {
	// Removendo cabeçalhos e comentários iniciais do xml exemplo
	if (output.indexOf("<?") > -1 || output.indexOf("<!") > -1) {
		continue;
	}
		result += output;
}

Com o código acima acabamos de remover linhas que começam com "<?" e "<!" que não são aceitas pelo parser xml e que não fazem parte da estrutura relevante de dados do xml. Neste caso por coincidência estaremos removendo as duas primeira linhas do arquivo xml :

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

<!-- Edited by XMLSpy --> 

Neste exemplo tivemos esses dois elementos que foram removidos para que o xml fosse aceito pelo parser xml. Mas em alguns xml alguns elementos deverão ser tratados antes de serem submetidos ao parser. Atenção especial a documentos xml que contenham a tag <class> Essa tag não poderá ter propriedades instanciadas internamente. Ex: <class size="10"> . Em casos como este deverá ser feito um tratamento removendo essas propriedades para que seja possível converter o xml da resposta da url em um documento xml javascript válido . 


 

 

Exemplo de Nota

Insere Nota

 

Exemplo de Observação

Insere Observação

 

Assunto Secundário

Assunto, exemplo com marcadores. A seguir apenas um passo.

Figura 1 - Exemplo de imagem (centralizada). Legenda negrito e justificada.

 

 

Assunto Secundário

Comentário sobre o assunto. Macro para passo a passo.

Acompanhe os passos a seguir:

Abaixo é utilizado o exemplo de interação passo a passo. Facilita o entendimento.