Olá a todos,
estava lendo a respeito do XStream p/ poder “transformar” arquivos XML em objetos e vice-versa.
porém, em todos os exemplos que eu vi e que consegui fazer, eu tenho obrigatoriamente que primeiramente transformar o objeto em XML p/ depois poder fazer o inverso, é isso mesmo?
porque o que eu tô querendo fazer é pegar um arquivo XML já existente na minha máquina e transformar ele num objeto. Como fazer isso? É possível pelo XStream?
O XStream propriamente dito não faz o que você tá querendo, porém, eu posso te falar duas coisas que podem de ajudar:
1º - entre no site www.vraptor.org/xmodeller, e digite seu XML lá que ele vai te dar a configuracão do XStream
2º - Existe o XML DOM, dá uma olhada no site, ele tem a opcão de criar “nodes” que talvez seja mais o que você queira
[quote=gui0rafa]O XStream propriamente dito não faz o que você tá querendo, porém, eu posso te falar duas coisas que podem de ajudar:
1º - entre no site www.vraptor.org/xmodeller, e digite seu XML lá que ele vai te dar a configuracão do XStream
2º - Existe o XML DOM, dá uma olhada no site, ele tem a opcão de criar “nodes” que talvez seja mais o que você queira[/quote]
Se o seu objetivo é trabalhar com beans, JAXB pode lhe ser útil:
http://www.onjava.com/pub/a/onjava/2004/12/15/jaxb.html
Ao inves de usar DOM, use JDOM. É mais light:
http://www.jdom.org/
JAXB resolveu rapidamente um problema que meu colega teve - ele recebia um XML cujo XML Schema foi-lhe dado (arquivo .XSD), e tinha de transformá-lo em um objeto.
Só que ele não era muito experiente com Java.
Então a gente pegou o tal do xjc (converte .XSD em classes Java que usam JAXB), e rapidamente o código para usar com JAXB foi gerado e o problema dele foi resolvido.
Hm, ou não entendi o problema ou o pessoal acima errou. Eu transformo XML que não foi gerado pelo XStream em Objetos tranquilamente.
Exemplo:
// windows.xml
<windows>
<window>
<id>1</id>
</window>
<window>
<id>2</id>
</window>
</windows>
// Window.java
public class Window {
private Long id;
}
// Test.java
XStream xstream = new XStream();
xstream.alias( "windows", List.class );
xstream.alias( "window", Window.class );
List< Window > windows = ( List< XMLWindow > ) xstream.fromXML( new FileReader( "windows.xml" ) );
Era isso mesmo Lipe… funcionou direitinho valeu!