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?