ricardoneves93 Posted August 2, 2013 at 10:09 PM Report #520726 Posted August 2, 2013 at 10:09 PM 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 http://www.speedtest.net/result/2682095343.png
Ernest Posted August 3, 2013 at 01:42 AM Report #520733 Posted August 3, 2013 at 01:42 AM 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(); } } }
ricardoneves93 Posted August 3, 2013 at 09:46 PM Author Report #520788 Posted August 3, 2013 at 09:46 PM Tens razão que estupidez a minha...Obrigado pelo esclarecimento 😉 http://www.speedtest.net/result/2682095343.png
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now