Histórico da Página
...
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 | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
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 | ||
|---|---|---|
| ||
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 | ||
|---|---|---|
| ||
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 | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
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 | ||
|---|---|---|
| ||
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 | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
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 | ||
|---|---|---|
| ||
Lembre-se que manipulação de xml é Case-sensitive com a denominação original do documento xml. |