Ir para o conteúdo
ricardoneves93

XML SAX parser

Mensagens Recomendadas

ricardoneves93

Boa noite estou a tentar fazer um parser para conseguir construir um vários níveis para um jogo android que estou a desenvolver. Ainda não entendi bem a diferença entre os vários tipos de parsers mas este pareceu-me o mais fácil de entender para começar. O problema é que eu vi o exemplo numa classe que já tem o main, porém eu queria colocar numa classe à parte, mas está-me a dar um erro esquisito de parêntesis. Alguém me pode dizer o que é? Eu vou postar o código abaixo. E já agora acham este parser adequado para o que eu quero?

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class ReadXMLFile extends DefaultHandler{

  try {

  SAXParserFactory factory = SAXParserFactory.newInstance();
  SAXParser saxParser = factory.newSAXParser();

  DefaultHandler handler = new DefaultHandler() {

  boolean xPos = false;
  boolean yPos = false;
  boolean xSize = false;
  boolean ySize = false;


  public void startElement(String uri, String localName,String qName,
			  Attributes attributes) throws SAXException {

System.out.println("Start Element :" + qName);

if (qName.equalsIgnoreCase("XPOS")) {
 xPos = true;
}

if (qName.equalsIgnoreCase("YPOS")) {
 yPos = true;
}

if (qName.equalsIgnoreCase("XSIZE")) {
 xSize = true;
}

if (qName.equalsIgnoreCase("YSIZE")) {
 ySize = true;
}

  }

  public void endElement(String uri, String localName,
String qName) throws SAXException {

System.out.println("End Element :" + qName);

  }

  public void characters(char ch[], int start, int length) throws SAXException {

if (xPos) {
 System.out.println("X Position : " + new String(ch, start, length));
 xPos = false;
}

if (yPos) {
 System.out.println("Y Position : " + new String(ch, start, length));
 yPos = false;
}

if (xSize) {
 System.out.println("X Size : " + new String(ch, start, length));
 xSize = false;
}

if (ySize) {
 System.out.println("Y Size : " + new String(ch, start, length));
 ySize = false;
}

  }

   };

	 saxParser.parse("c:\\file.xml", handler);

   } catch (Exception e) {
	 e.printStackTrace();
   }
}

Porém se estiver envolvido pelo main não há qualquer problema. Dá-me erro de sintaxe diz que falta acrescentar um parêntesis para completar o corpo da classe.

Cumprimentos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Ernest Duarte

Bom dia ,

SAX e JSON teoricamente mais leve ao nível memoria do que DOM

Java é uma linguagem bem estruturada ao contrario de outras linguagens de informática :-)

em vez de usar o método main(...) pode chamar : parseFazFavor()

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class ReadXMLFile extends DefaultHandler {
public void parseFazFavor() {
 try {
   SAXParserFactory factory = SAXParserFactory.newInstance();
   SAXParser saxParser = factory.newSAXParser();
   DefaultHandler handler = new DefaultHandler() {
     boolean xPos = false;
     boolean yPos = false;
     boolean xSize = false;
     boolean ySize = false;

     public void startElement(String uri, String localName,String qName,
       Attributes attributes) throws SAXException {
       System.out.println("Start Element :" + qName);
       if (qName.equalsIgnoreCase("XPOS")) {
         xPos = true;
       }
       if (qName.equalsIgnoreCase("YPOS")) {
         yPos = true;
       }
       if (qName.equalsIgnoreCase("XSIZE")) {
         xSize = true;
       }
       if (qName.equalsIgnoreCase("YSIZE")) {
         ySize = true;
       }
     }
     public void endElement(String uri, String localName,
       String qName) throws SAXException {
       System.out.println("End Element :" + qName);
     }
     public void characters(char ch[], int start, int length) throws SAXException {
       if (xPos) {
         System.out.println("X Position : " + new String(ch, start, length));
         xPos = false;
       }
       if (yPos) {
       System.out.println("Y Position : " + new String(ch, start, length));
         yPos = false;
       }
       if (xSize) {
         System.out.println("X Size : " + new String(ch, start, length));
         xSize = false;
       }
       if (ySize) {
         System.out.println("Y Size : " + new String(ch, start, length));
         ySize = false;
       }
     }
   }; // FIM da classe interna local
   saxParser.parse("c:\\file.xml", handler);
 } catch (Exception e) {
   e.printStackTrace();
 }
}
}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.