Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Diego Garcia

Tratamento de XML

Recommended Posts

Amigos boa tarde...

 

Gostaria de saber se existe alguma maneira de "limpar" os nós sem valor de um xml.

Pro exemplo, estou montando um XML com o TXMLDocument , adiciono um nó que será um "nó pai" de outros nós que viram na sequencia... Por ventura, nenhum nó filho possui valor ou seja, terei o que chamamos de "nó perneta". Gostaria de saber se existe alguma forma de remover esses nós do xml final de preferência utilizando o próprio TXMLDocument ou mesmo tratamento de texto mesmo..

 

xml de exemplo:

<pessoa>
  <nome>João</nome>
  <idade>50</idade>
  <ende /> ----> esse nó seria um nó pai de outros 5 nós filhos por exemplo 
</pessoa>

Preciso disso pois, alguns WebServices (como por exemplo NFe) obrigam a remoção desses nós.

 

desde já, muito obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigos boa tarde...

 

Gostaria de saber se existe alguma maneira de "limpar" os nós sem valor de um xml.

Pro exemplo, estou montando um XML com o TXMLDocument , adiciono um nó que será um "nó pai" de outros nós que viram na sequencia... Por ventura, nenhum nó filho possui valor ou seja, terei o que chamamos de "nó perneta". Gostaria de saber se existe alguma forma de remover esses nós do xml final de preferência utilizando o próprio TXMLDocument ou mesmo tratamento de texto mesmo..

 

xml de exemplo:

<pessoa>
  <nome>João</nome>
  <idade>50</idade>
  <ende /> ----> esse nó seria um nó pai de outros 5 nós filhos por exemplo 
</pessoa>

Preciso disso pois, alguns WebServices (como por exemplo NFe) obrigam a remoção desses nós.

 

desde já, muito obrigado.

 

É só não dar create , no exemplo acima, no nó "ende" nem adiciona-lo com (appendchild) no nó pai "pessoa", se o valor a ser inserido nele estiver vazio, com um IF voce resolve isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, mas imagine o seguinte...

eu tenho vários nós filhos (50 por exemplo) e não sei se alguns deles tem ou não tem valor.

para todos os nos filhos eu verifico se o valor que pretendo gravar esta em branco, caso esteja eu não adiciono o nó filho (utilizo o if para isso)

mas para chegar nessa etapa eu obrigatoriamente tenho que adicionar o nó pai, nessa o nó pai pode ficar vazio no final.

 

imagine que a estrutura do nó ende seja a seguinte:

 

<ende>
  <rua>....</rua>
  <nro>....</nro>
  .....
 </ende>

para inserir os filhos no nó ende eu tenho que dar o add nele, porem pode acontecer de não ter nenhum dado para seus nós filhos, dessa forma ele ficaria sem nenhum valor.

 

Sei que existe o método HasChildNodes que fala se o nó tem filhos;

 

if not XMLDocument1.ChildNodes['pessoa'].ChildNodes['ende'].HasChildNodes then

porem, no meu caso, preciso primeiro gerar o xml inteiro e depois correr toda sua estrutura para eliminar os nós sem valor ou sem filhos.

Não estou conseguindo fazer isso. http://forum.imasters.com.br/public/style_emoticons/default/natal_sad.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Diego , concordo com você , não da para dar o "appendchild" nos filhos sem antes criar e dar o append no pai,

mas nada impede voce de verifica antes de dar o append no pai se todos os dados dos filhos estão preenchidos,

Caso esteja usando componentes como query's, voce pode abri-la no registro que voce quiser e antes de iniciar a programação por exemplo dos nós ,

verificar se todos os dados estão preenchidos, senão pule para o próximo.

Acho que é isso.

Espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sei que é possível verificar os se um nó vai vai ter algum nó filho, mas imagine uma estrutura de xml semelhante a NFe onde a arvore de registro é extensa. Na minha opinião seria mais fácil gerar todo XML e depois criar uma função para tratar o mesmo, removendo os nós sem valor e sem nós filhos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.