Árvore de páginas

Versões comparadas

Chave

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

...

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á

...

importado

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

...

Bloco de código
languagejava
titleCarregando documento
firstline0
linenumberstrue
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 :

...

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.

 

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">

 

 

Exemplo de Nota

Informações
titleNota

Insere Nota

 

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 .

O código para essa transformação é bem simples e poderá ser visto no bloco abaixo

Bloco de código
languagejava
titleRealizando o Parsing do xml para variável javascript
firstline0
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 manitpulação. Em caso negativo será gerada uma mensagem de erro no log do jboss do Fluig e a execução do evento em questão será abortada.Exemplo de Observação

Nota
titleObservação

Insere Observação

 

Assunto Secundário

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

  • Marcador.
  • Marcador.

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.

 

...

Caso a execução do evento Fluig tenha sido abortada antes de gerar os resultados esperados verifique o log do Jboss 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() . Lembrado que o caso das letras deverá seguir o mesmo existente dentro do xml  . Neste exemplo nós pegamos a quantidade de ocorrências existente dentro da coleção CD existente dentro do objeto Doc (que representa <catalog>. No bloco abaixo temos exemplos de consulta, criação e eliminação de campos dentro de todos os registros de CD existentes  no documento xml.

 

 

Bloco de código
languagejava
titleManipulando xml
firstline0
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

Lembre-se que manipulação de xml é Case-sensitive com a denominação original do documento xml.

Em anexo segue esta lógica implementada como um evento de formulário .

displayFields.js