nextuser 20 de ago. de 2012
pera ai vc está falando que está indo do objeto para XML(string) é isso?
donatinho 20 de ago. de 2012
Sim, do objeto para xml…
:shock:
donatinho 20 de ago. de 2012
Pra falar a verdade o meu objeto esta assim:
1
135100000000000
<nfeProc versao="2.00" continua com o xml ...
ont listaCatalogNFe é um List e CatalogoNFe é um objeto que contem tipoXml, numProt e xml, que sao todas variaveis de instancia String.
Quando faco isso:
String teste = (String) RetornoCatalogoNFe.toXML(cat);
System.out.println(teste);
é que ele nao entende os caracteres e coloca
& lt;nfeProc versao=& quot;2.00& quot; xmlns=& quot;http://www.portalfiscal.inf.br/nfe "& gt;& lt;NFe…
nextuser 20 de ago. de 2012
cara nuam é assim que funciona o xstream…
nextuser 20 de ago. de 2012
posta sua classe que vc quer serializar
donatinho 20 de ago. de 2012
Classe a ser tratada no xstream:
import java.util.List ;
import br.inf.portalfiscal.nfe.xstream.ConfgXStream ;
import br.inf.portalfiscal.xstream.ConfgXStreamCatalogo ;
import com.thoughtworks.xstream.XStream ;
public class RetornoCatalogoNFe {
// variaveis de instancia
private List < CatalogoNFeVO > listaCatalogo ;
// construtores
public RetornoCatalogoNFe () {
}
public RetornoCatalogoNFe ( List < CatalogoNFeVO > colecao ) {
this . listaCatalogo = colecao ;
}
// metodos publicos
public List < CatalogoNFeVO > getListaCatalogo () {
return listaCatalogo ;
}
public void setListaCatalogo ( List < CatalogoNFeVO > listaCatalogo ) {
this . listaCatalogo = listaCatalogo ;
}
public static String toXML ( RetornoCatalogoNFe listaCatalogo ) {
XStream xstream = ConfgXStreamCatalogo . confCatalogo ;
return xstream . toXML ( listaCatalogo );
}
public static RetornoCatalogoNFe fromXML ( String xml ) {
XStream xstream = ConfgXStreamCatalogo . confCatalogo ;
return ( RetornoCatalogoNFe ) xstream . fromXML ( xml );
}
}
Classe que contem os dados
public class CatalogoNFeVO {
private String tipoXml ;
private String numProt ;
private String xml ;
public CatalogoNFeVO () {
}
public CatalogoNFeVO ( String tipoXml , String numProt , String xml ) {
this . tipoXml = tipoXml ;
this . numProt = numProt ;
this . xml = xml ;
}
public String getTipoXml () {
return tipoXml ;
}
public void setTipoXml ( String tipoXml ) {
this . tipoXml = tipoXml ;
}
public String getNumProt () {
return numProt ;
}
public void setNumProt ( String numProt ) {
this . numProt = numProt ;
}
public String getXml () {
return xml ;
}
public void setXml ( String xml ) {
this . xml = xml ;
}
}
XStream propriamente :
import java.io.File ;
import java.io.IOException ;
import java.util.ArrayList ;
import java.util.List ;
import com.thoughtworks.xstream.XStream ;
import com.thoughtworks.xstream.io.xml.DomDriver ;
import com.thoughtworks.xstream.io.xml.XmlFriendlyReplacer ;
public class ConfgXStreamCatalogo {
// CATALOGO NFE
public static XStream confCatalogo ;
static {
// CATALOGO NFE
confCatalogo = ConfgXStreamCatalogo . confCatalogo ();
}
//INICIO Catalogo_nfe
private static XStream confCatalogo () {
XStream xstream = new XStream ();
xstream . addImplicitCollection ( RetornoCatalogoNFe . class , "listaCatalogo" , "catalogoNFe" , CatalogoNFeVO . class );
xstream . alias ( "retornoCatalogoNFe" , RetornoCatalogoNFe . class );
xstream . alias ( "catalogoNFe" , CatalogoNFeVO . class );
return xstream ;
}
//FIM catalogo_nfe
public static void main ( String [] args ) throws IOException {
FileUtil fu = new FileUtil ();
CatalogoNFeVO catalogo = new CatalogoNFeVO ();
catalogo . setNumProt ( "444444444444444" );
catalogo . setTipoXml ( "1" );
catalogo . setTeste ( fu . lerCopiarString ( new File ( "z:\\arq\\proc\\procnfe200_t.xml" )));
List < CatalogoNFeVO > listaCat = new ArrayList < CatalogoNFeVO > ();
listaCat . add ( catalogo );
RetornoCatalogoNFe cat = new RetornoCatalogoNFe ();
cat . setListaCatalogo ( listaCat );
String teste = ( String ) RetornoCatalogoNFe . toXML ( cat );
System . out . println ( teste );
}
}
nextuser 20 de ago. de 2012
mas o campo xml é uam string portanto ele vai gravar como string e nuam como xml…
donatinho 21 de ago. de 2012
Galera, consegui resolver o meu problema!!!
Criei uma classe interna
private static XStream confCatalogo () {
XStream xstream = new XStream (
new DomDriver () {
public HierarchicalStreamWriter createWriter ( Writer out ) {
return new CatalogoNFePretty ( out ) ;
}
}
) ;
xstream .addImplicitCollection ( RetornoCatalogoNFe .class , "listaCatalogo" , "catalogoNFe" , CatalogoNFeVO .class ) ;
xstream .alias ( "retornoCatalogoNFe" , RetornoCatalogoNFe .class ) ;
xstream .alias ( "catalogoNFe" , CatalogoNFeVO .class ) ;
return xstream ;
}
Obrigado nextuser pela ajuda, foi de grande valia.
Abracos
donatinho