[RESOLVIDO] Problema com XML(Pegar valor do elemento)

4 respostas
agune

E ai pessoal, tenho um ficheiro XML e quero pegar o seu seu valor. Acredito que estou fazendo isso errado no metodo characters. Alguma idea de como pegar esse valor??

package sax;

import java.util.ArrayList;
import java.util.List;

import model.Contact;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class ContactHandler extends DefaultHandler {
	private List<Contact> contacts;
	private Contact currentContact;
	private String content;

	@Override
	public void startDocument() throws SAXException {
		// TODO Auto-generated method stub
		System.out.println("Inicio do documento");
		contacts=new ArrayList<Contact>();
	}

	@Override
	public void startElement(String uri, String localName, String qName,
			Attributes attributes) throws SAXException {
		
		if ("contact".equals(localName)) {
			currentContact = new Contact();
			contacts.add(currentContact);
		} else if ("name".equals(localName)) {
			currentContact.setName(content);
			System.out.println(content);

		}
	}

	@Override
	public void characters(char[] ch, int start, int length)
			throws SAXException {
		// TODO Auto-generated method stub
		content = new String(ch, start, length);
	}

	@Override
	public void endDocument() throws SAXException {
		// TODO Auto-generated method stub
		System.out.println("Fim doc.");
	}

	public List<Contact> getContactos() {
		return contacts;
	}
}

4 Respostas

nel

Mas qual é o seu erro ?
E outra, se está usando SAX, o seu XML já seria convertido automaticamente para um objeto, você fez essa conversão ?

Pois, se vai verificar a tag em questão, um DOM resolveria.

agune
<contacts>
	<contact>
		<name>Abilio Gune</name>
		<username>agune</username>
		<password>sometext</password>
		<address>Maputo</address>
	</contact>
	<contact>
		<name>Mobin Habib</name>
		<username>habib</username>
		<password>sometext</password>
		<address>sometext</address>
	</contact>
</contacts>

Eu tou a tentar pegar os valores do name, username, password e nao consigo!

o main ta assim
package teste;

import java.io.IOException;
import java.io.InputStream;

import model.Contact;

import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory;

import sax.ContactHandler;

public class TestSax {

	/**
	 * @param args
	 * @throws SAXException
	 * @throws IOException 
	 */
	public static void main(String[] args) throws SAXException, IOException {
		
		XMLReader reader = XMLReaderFactory.createXMLReader();

		ContactHandler handler = new ContactHandler();
		reader.setContentHandler(handler);
		
		InputStream stream = TestSax.class.getResourceAsStream("/contacts.xml");
		reader.parse(new InputSource(stream));
		
		
		for (Contact cont : handler.getContactos()) {
			System.out.println(cont.getName());
		}

	}

	
}
nel

Está gerando exceção ? Se sim, qual ?

agune

RESOLVIDO. Tem toda resolução do exercicio no FJ33.

Criado 2 de março de 2012
Ultima resposta 5 de mar. de 2012
Respostas 4
Participantes 2