segunda-feira, 3 de outubro de 2011

Ler XML JAVA 6 com SAX


Este código foi implementado utilizando: http://www.guj.com.br/articles/15
import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class LerXMLDOM {
 /**
  * @param args
  * @throws SAXException
  * @throws ParserConfigurationException
  * @throws IOException
  */
 public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
  // TODO Auto-generated method stub
  SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
  InputSource input = new InputSource("RelatorioCrasMensal.xml");
  parser.parse(input, new XMLHandler()); 
 
 }
}
class XMLHandler extends DefaultHandler {  
  
    /** o galho atual */ 
    private StringBuffer galhoAtual = new StringBuffer(200);  
 
    /** o valor da tag atual */ 
    private StringBuffer valorAtual = new StringBuffer(100);  
    /** comeca um documento novo */ 
  
     
    /** termina o documento */ 
    public void endElement(String uri, String localName, String tag)  
         {  
      
         // mostra o valor  
         System.out.print(valorAtual.toString().trim());  
         // e limpa  
         valorAtual.delete(0, valorAtual.length());  
      
         // seta o galho atual  
         galhoAtual.delete(  
             galhoAtual.length() - tag.length() - 1,  
             galhoAtual.length());  
      
     } 
   
    public void startElement(  
         String uri,  
         String localName,  
         String tag,  
         Attributes atributos)  
         {  
      
         // seta o galho atual  
         galhoAtual.append("/" + tag);  
      
         // mostra a tag  
         System.out.print(  
             "\n<" 
                 + galhoAtual.substring(1)  
                 + (atributos.getLength() != 0 ? " +ATRIBUTOS" : "")  
                 + ">");  
      
         // limpa a tag atual  
         valorAtual.delete(0, valorAtual.length());  
      
     }
   
    /** recebe os dados de uma tag */ 
    public void characters(char[] ch, int start, int length) {  
     
        // adiciona ao valor atual  
        valorAtual.append(ch, start, length);  
     
    } 
}

----------------------------------------------------------------------------------------------------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<relatorio_mensal_cras_v1>

 <hora_geracao>11</hora_geracao>
 <minuto_geracao>15</minuto_geracao>
 <segundo_geracao>55</segundo_geracao>

 <dia_geracao>03</dia_geracao>
 <mes_geracao>10</mes_geracao>
 <ano_geracao>2011</ano_geracao>

 <mes_referencia>04</mes_referencia>
 <ano_referencia>2011</ano_referencia>

 <numero_unidade>1234</numero_unidade>
 
 <a1>100</a1>
 <a2>200</a2>

 <b1>300</b1>
 <b2>400</b2>
 <b3>500</b3>
 <b4>600</b4>
 <b5>700</b5>
 <b6>800</b6>

 <c1>900</c1>
 <c2>1000</c2>
 <c3>1100</c3>
 <c4>1200</c4>
 <c5>1300</c5>

 <d1>1400</d1>
 <d2>1500</d2>
 <d3>1600</d3>
 <d4>1700</d4>
 <d5>1800</d5>
 <d6>1900</d6>
 <d7>2000</d7>
 
</relatorio_mensal_cras_v1>

-----------------------------------------------------------------------------------------------------------------------------------------------
Resultado

<relatorio_mensal_cras_v1>
<relatorio_mensal_cras_v1/hora_geracao>11
<relatorio_mensal_cras_v1/minuto_geracao>15
<relatorio_mensal_cras_v1/segundo_geracao>55
<relatorio_mensal_cras_v1/dia_geracao>03
<relatorio_mensal_cras_v1/mes_geracao>10
<relatorio_mensal_cras_v1/ano_geracao>2011
<relatorio_mensal_cras_v1/mes_referencia>04
<relatorio_mensal_cras_v1/ano_referencia>2011
<relatorio_mensal_cras_v1/numero_unidade>1234
<relatorio_mensal_cras_v1/a1>100
<relatorio_mensal_cras_v1/a2>200
<relatorio_mensal_cras_v1/b1>300
<relatorio_mensal_cras_v1/b2>400
<relatorio_mensal_cras_v1/b3>500
<relatorio_mensal_cras_v1/b4>600
<relatorio_mensal_cras_v1/b5>700
<relatorio_mensal_cras_v1/b6>800
<relatorio_mensal_cras_v1/c1>900
<relatorio_mensal_cras_v1/c2>1000
<relatorio_mensal_cras_v1/c3>1100
<relatorio_mensal_cras_v1/c4>1200
<relatorio_mensal_cras_v1/c5>1300
<relatorio_mensal_cras_v1/d1>1400
<relatorio_mensal_cras_v1/d2>1500
<relatorio_mensal_cras_v1/d3>1600
<relatorio_mensal_cras_v1/d4>1700
<relatorio_mensal_cras_v1/d5>1800
<relatorio_mensal_cras_v1/d6>1900
<relatorio_mensal_cras_v1/d7>2000

Nenhum comentário: