Olá a todos,
Estou tentando fazer um parser para xml usando o SAXparser. Quando o SAX começa a ler uma tag xml, usa o método startElement, mas no meu caso não entra neste meu método.
No entanto, colocando uma linha para mostrar para o ecrã o resultado parcial do parser através do método characters, verifico que não entra nos ifs que coloquei, para validar a tag.
Alguém me pode dar uma ajuda?
Valeu
Vou postar o código:
public static void main(String[] args) {
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
DefaultHandler handler = new DefaultHandler() {
boolean id = false;
boolean nome = false;
boolean user = false;
public void startElement(String uri, String localName, String qName, Attributes attributes)
throws SAXException {
System.out.println("TAG_INICIAL :" + qName);
if (qName.equalsIgnoreCase("ID")) {
id = true;
}
if (qName.equalsIgnoreCase("NOME")) {
nome = true;
}
if (qName.equalsIgnoreCase("USER")) {
user = true;
}
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
System.out.println("TAG :" + qName);
}
@Override
public void characters(char ch[], int start, int length)
throws SAXException {
System.out.println(new String(ch, start, length));
String valoractual = new String(ch, start, length);
if (id) {
System.out.println("ID : "
+ new String(ch, start, length));
id = false;
}
if (nome) {
System.out.println("Nome : "
+ new String(ch, start, length));
nome = false;
}
if (user) {
System.out.println("Username : "
+ new String(ch, start, length));
user = false;
}
}
};
File file = new File("users.xml");
InputStream inputStream = new FileInputStream(file);
Reader reader = new InputStreamReader(inputStream, "UTF-8");
InputSource is = new InputSource(reader);
is.setEncoding("UTF-8");
saxParser.parse(is, handler);
} catch (Exception e) {
System.out.println("ERRO:" + e.toString());
}
}