Leitura de Xml

5 respostas
marcelorbrito

Oi Pessoal…
Quero fazer a leitura de um xml e pegar apenas algumas informações… como faço?

O exemplo do xml é o seguinte:

<?xml version="1.0" encoding="utf-8"?> <MARGINCATEGORIESVALUES> <MARGINCATEGORYVALUES ID="cozinhas"> <MARGINSORDERVALUES> <MARGINVALUE ID="icms" VALUE="0"> <MARGINREDEFINITIONSVALUES> <MARGINREDEFINITIONVALUE ID="icms_dif" VALUE="0" /> </MARGINREDEFINITIONSVALUES> </MARGINVALUE> <MARGINVALUE ID="desc_1" VALUE="0" /> <MARGINVALUE ID="desc_2" VALUE="0" /> <MARGINVALUE ID="desc_3" VALUE="0" /> <MARGINVALUE ID="desc_4" VALUE="0" /> <MARGINVALUE ID="desc_5" VALUE="0" /> <MARGINVALUE ID="acr_1" VALUE="0" /> <MARGINVALUE ID="IPI" VALUE="5"> <MARGINREDEFINITIONSVALUES> <MARGINREDEFINITIONVALUE ID="ipi_ace" VALUE="10" /> <MARGINREDEFINITIONVALUE ID="ipi_mec" VALUE="10" /> <MARGINREDEFINITIONVALUE ID="ipi_lum" VALUE="15" /> <MARGINREDEFINITIONVALUE ID="ipi_pis" VALUE="0" /> </MARGINREDEFINITIONSVALUES> </MARGINVALUE> </MARGINSORDERVALUES> <MARGINSBUDGETVALUES> <MARGINVALUE ID="acrescimo" VALUE="0"> <MARGINREDEFINITIONSVALUES> <MARGINREDEFINITIONVALUE ID="acr_aram" VALUE="0" /> <MARGINREDEFINITIONVALUE ID="acr_mec" VALUE="0" /> <MARGINREDEFINITIONVALUE ID="acr_org" VALUE="0" /> <MARGINREDEFINITIONVALUE ID="acr_palum" VALUE="0" /> <MARGINREDEFINITIONVALUE ID="acr_pcg" VALUE="0" /> <MARGINREDEFINITIONVALUE ID="acr_prat" VALUE="0" /> </MARGINREDEFINITIONSVALUES> </MARGINVALUE> <MARGINVALUE ID="frete" VALUE="0" /> </MARGINSBUDGETVALUES> </MARGINCATEGORYVALUES> </MARGINCATEGORIESVALUES>

5 Respostas

T

A resposta para “quero pegar só alguma coisa do XML” é normalmente XPath.

marcelorbrito

Desculpe, mais não entendi…
Você poderia me esclarecer com mais detalhes…

Obrigado!

fantomas

Acredito que o caminho que o thingol apontou (XPath) seja mais objetivo.

Mas este framework bacana aqui http://xstream.codehaus.org/ também pode lhe ajudar.

flws

T

Digamos que você queira obter o valor da margem de redefinição para o item "acr_aram" dentro do item valor de margem "acrescimo", e dentro das cagetorias de valores "cozinhas", como você está vendo abaixo, e não queira saber mais nada.

&lt;?xml version="1.0" encoding="utf-8"?&gt;  
 &lt;MARGINCATEGORIESVALUES&gt;  
   &lt;MARGINCATEGORYVALUES ID="cozinhas"&gt;  
     &lt;MARGINSORDERVALUES&gt;  
...
     &lt;MARGINSBUDGETVALUES&gt;  
       &lt;MARGINVALUE ID="acrescimo" VALUE="0"&gt;  
         &lt;MARGINREDEFINITIONSVALUES&gt;  
           &lt;MARGINREDEFINITIONVALUE ID="acr_aram" VALUE="0" /&gt;

Para esse tipo de coisa (onde você só quer pegar o atributo VALUE nesse nó), você pega o nó retornado pela expressão XPath:
/MARGINCATEGORIESVALUES/MARGINCATEGORYVALUES[@ID=“cozinhas”]/MARGINSBUDGETVALUES/MARGINVALUE[@ID=“acrescimo”]/MARGINREDEFINITIONSVALUES/MARGINREDEFINITIONVALUE[@ID=“acr_aram”]/@VALUE

marcelorbrito

Obrigado Thingol…
Com essa solução, meu pequeno problema está resolvido…

Criado 24 de junho de 2009
Ultima resposta 26 de jun. de 2009
Respostas 5
Participantes 3