Assunto: Mapear XML para objeto

2 respostas
L

Estou precisando mapear um arquivo xml para uma classe, para construir um objeto com os atributos contidos no xml.
Estou usando StAX para ler o arquivo.

Escrevi um xml só para exemplo:
book.xml

<?xml version="1.0" encoding="UTF-8"?>
 <book>
    <person occupation="programmer">
        <firstName>First Name</firstName>
        <lastName>Last Name</lastName>
    </person>
</book>

A minha classe que lê esse arquivo é a seguinte:

import java.io.FileInputStream;

import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamReader;

public class TestStAX {     
	public void readConfig(String fileName) {     
		try {
			FileInputStream fileInputStream = new FileInputStream(fileName);
			XMLStreamReader xmlStreamReader = XMLInputFactory.newInstance().createXMLStreamReader(fileInputStream);
			while (xmlStreamReader.hasNext()) {
				int eventCode = xmlStreamReader.next();
				switch (eventCode) {
				case XMLStreamConstants.START_ELEMENT :
					System.out.println("event = START_ELEMENT");
					System.out.println("Localname = "+xmlStreamReader.getLocalName());
					break;
				case XMLStreamConstants.END_ELEMENT :
					System.out.println("event = END_ELEMENT");
					System.out.println("Localname = "+xmlStreamReader.getLocalName());
					break;
				case XMLStreamConstants.CHARACTERS :
					if((!xmlStreamReader.getText().trim().equals(""))){
						System.out.println("event = CHARACTERS");
						System.out.println("Value = "+xmlStreamReader.getText());
						break;
					}
				}
				xmlStreamReader.close();
			}
		}
		catch(Exception e){
			e.printStackTrace();
		}
	}
	public static void main(String args[]) {
		TestStAX read = new TestStAX();
		read.readConfig("C:/book.xml");
	}
}

Mas essa classe apenas lê os elementos do xml e os imprime na tela. Como eu faço para mapea-los num objeto?
Alguma ideia?

2 Respostas

mchiareli

olá, use o xstream para isso, é muito mais simples…

http://xstream.codehaus.org/

rissato

já tentou com jaxb?

dá pra fazer objeto->xml e xml->objeto usando annotations…

Criado 9 de agosto de 2008
Ultima resposta 9 de ago. de 2008
Respostas 2
Participantes 3