Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.


 

Índice

Índice
maxLevel4
outlinetrue
exclude.*ndice
stylenone
 


Objetivo

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

...

Desta maneira fica mais fácil tratar o XML e realizar integrações.

 

 



O xml que será importado

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

...

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).

...

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 onde não foi possível 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.

...

Bloco de código
languagexml
<?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.

...

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. 


Nota
titleObservação

Tags com nome "class" não poderão ter propriedades internas definidas na própria tag de abertura .

Ex: <class size="10">.

 


Realizando a conversão de String para documento xml javascript.

Após a remoção e tratamento de "impurezas" da string xml chegamos ao ponto mais crítico que é a transformação ou parsing da string xml para um documento javascript xml .

...

Bloco de código
languagejava
firstline0
titleRealizando o Parsing do xml para variável javascript
linenumberstrue
var doc = new XML(result);

...


Nesta parte iremos descobrir se o XML passado para o javascript é válido como documento xml e se o mesmo está apto para consulta e manipulação. Em caso negativo será gerada uma mensagem de erro no log do WildFly do fluig e a execução do evento em questão será abortada.

Nota
titleObservação

Caso a execução do evento fluig tenha sido abortada antes de gerar os resultados esperados verifique o log do WildFly fluig para possíveis erros de parser do XML enviado.

 


Manipulando o documento xml

Agora temos a varível doc carregada com o xml  partir do primeiro nível ou seja. A variável doc representa a tag <catalog> da string xml do documento que foi enviado. Para vermos a quantidade de cds que temos no catálogo basta usarmos o seguinte comando : doc.CD.length() .

...

Bloco de código
languagejava
firstline0
titleManipulando xml
linenumberstrue
 log.info("Foram encontrados " + doc.CD.length() + " discos no XML");
 // Fazendo a leitura de todos os CDs que vieram no xml
 for (y in doc.CD) {
	// Exibindo uma propriedade de um dos itens do xml
	log.info("Nome do disco: " + doc.CD[y].TITLE);
	// inserindo novo campo que conterá o valor do campo price convertido para o preco em real
	doc.CD[y].VALORBRL = "R$ " + (doc.CD[y].PRICE * 2);

	// Removendo campo Year do xml 
	delete doc.CD[y].YEAR;
}

...


Após a execução desta lógica "for" a variável doc já conterá o xml alterado e poderá ser utilizada para quaisquer fins necessários, entre eles o reenvio para uma aplicação externa ao fluig.

...

Nota
titleObservação

Esta técnica não pode ser utilizada para desenvolvimento de Datasets (Método createDataset) pois a classe XMLList não implementa a interface serializable causando erro na execução deste método. O XML Será lido e interpretado porém não será produzido nenhum resultado.

 

 

 

...