Acessando Campos com Condições no Xpath
quinta-feira, 8 de dezembro de 2011
|
|
Já falamos como acessar campos com expressões xpath aqui no blog.
Mas e se, dentro desse xpath tivesse que ter condições, IFs, comparações?
Então vamos levar em consideração esse schema simples que representa os Produtos de uma empresa:
Vamos supor 3 situações:
Notem que depois da tag que se repete, a tag PRODUTO, coloco o indice que desejo retornar [3].
Aqui, na expressao xpath coloquei o comando count para retornar a quantidades de registro da tag PRODUTO, e a variável iCount é um int32.
Aqui tirei o namespace para ficar mais simples e conseguir incluir a condição. Aqui está retornando uma string do campo descrição mas está fazendo a condição Codigo = “110110”
E como colocamos a condição AND nesse xpath? Assim:
Resumindo, aprendemos mais três maneiras de acessar os campos com xpath nesse post. Fica documentado.
Até a próxima.
Mas e se, dentro desse xpath tivesse que ter condições, IFs, comparações?
Então vamos levar em consideração esse schema simples que representa os Produtos de uma empresa:
Vamos supor 3 situações:
- A primeira que eu preciso retornar o valor do campo Descricao do terceiro registro.
Então em um Message Assigment ficaria dessa maneira.
1: strTemp = xpath(msgProdutos, "string(/*[local-name()='PRODUTOS' and namespace-uri()='http://SamplePubSubscribe2.schemas.schProdutos']/*[local-name()='PRODUTO' and namespace-uri()=''][3]/*[local-name()='Descricao' and namespace-uri()=''])")
- Na segunda situação vamos supor que eu deveria retornar a quantidade de registros na tag PRODUTO, quero saber quantas vezes ela aparece dentro da mensagem.
1: iCount = xpath(msgProdutos, "count(/*[local-name()='PRODUTOS' and namespace-uri()='http://SamplePubSubscribe2.schemas.schProdutos']/*[local-name()='PRODUTO' and namespace-uri()=''])");
- E finalmente, vamos imaginar a necessidade de retornar o Produto que tem um código qualquer, mas não sei em qual posição ele virá. Então preciso fazer alguma coisa do tipo Se Codigo = ‘2345’ então;
1: strTemp = xpath(msgProdutos, "string(/*[local-name()='PRODUTOS']/*[local-name()='PRODUTO'][*[local-name()='Codigo']='110110']/*[local-name()='Descricao'])");
E como colocamos a condição AND nesse xpath? Assim:
1: strTemp = xpath(msgProdutos, "string(/*[local-name()='PRODUTOS']/*[local-name()='PRODUTO'][*[local-name()='Codigo']='110110' and *[local-name()='Teste']='1']/*[local-name()='Descricao'])");
Resumindo, aprendemos mais três maneiras de acessar os campos com xpath nesse post. Fica documentado.
Até a próxima.
Seja o primeiro a comentar ;)
Postar um comentário