corvao
Junho 16, 2005, 3:41pm
#1
Ae galera blz?? tenho este codigo abaixo que gravar um object!
XMLEncoder encXML;
try {
encXML = new XMLEncoder(
new BufferedOutputStream(
new FileOutputStream( strFileName+".xml" )));
encXML.writeObject(obj);
encXML.close();
} catch (FileNotFoundException e) {
JOptionPane.showMessageDialog(null,e.toString()+"\nErro ao salvar o arquivo "+strFileName);
}
PROBLEMA:
Eu estou gravando um Vector, este Vector tem dentro atributos e mais um vector com dois atributos(do tipo Point)! e quando eu vou gravar, ele nao esta salvando os atributos Point de dentro do vector, alguem sabe me dizer o porque? E qual seria a solução para isso???
Obrigado
corvao
Junho 17, 2005, 2:32pm
#2
ninguem tem ideia do porque que isso ocorre?
foia
Junho 17, 2005, 2:57pm
#3
a classe Point implementa java.io.Serializable ?
corvao
Junho 17, 2005, 3:33pm
#4
nao tenho menor ideia, heheh vou ver, ja atualizo aqui!!!
java.awt
Class Point
java.lang.Object
extended byjava.awt.geom.Point2D
extended byjava.awt.Point
All Implemented Interfaces:
Cloneable, Serializable
foia
Junho 17, 2005, 3:52pm
#5
tenta:
encXML.writeObject( obj );
encXML.flush();
encXML.close();
será q o segredo é o flush !?
corvao
Junho 18, 2005, 11:32pm
#6
eh noa nao faz menos diferença!!! nao tenho menor ideia do que fazer!! ta fodiz, alguma solução?
louds
Junho 19, 2005, 3:29am
#7
Vector não é um JavaBeans, não tem pq funcionar. XMLEncoder é para JavaBeans apenas.
cv1
Junho 19, 2005, 4:48am
#8
XStream! XStream! XStream!
foia
Junho 19, 2005, 10:23am
#9
fiz
import java.awt.Point;
import java.beans.XMLEncoder;
import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.Vector;
public class JugTest
{
public static void main(String[] args)
{
Vector superVector = new Vector();
Point superPoint = new Point(1,1);
Point superPoint2 = new Point(2,2);
superVector.add(superPoint);
superVector.add(superPoint2);
XMLEncoder encXML;
try
{
encXML = new XMLEncoder(new BufferedOutputStream(new FileOutputStream(
"ser.xml")));
encXML.writeObject(superVector);
encXML.close();
}
catch (FileNotFoundException e)
{
}
}
}
ser.xml ficou assim:
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.5.0_03" class="java.beans.XMLDecoder">
<object class="java.util.Vector">
<void method="add">
<object class="java.awt.Point">
<int>1</int>
<int>1</int>
</object>
</void>
<void method="add">
<object class="java.awt.Point">
<int>2</int>
<int>2</int>
</object>
</void>
</object>
</java>
corvao
Junho 19, 2005, 10:23am
#10
Ja tentei usar o XStream, mas nao consigo ler o arquivo, ele me retorna uma string imensa!!! heheh, tem como vc me ajudar? ou me passar um exemplo seu??
Obrigado
corvao
Junho 19, 2005, 10:39am
#11
[quote=foia]fiz
import java.awt.Point;
import java.beans.XMLEncoder;
import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.Vector;
public class JugTest
{
public static void main(String[] args)
{
Vector superVector = new Vector();
Point superPoint = new Point(1,1);
Point superPoint2 = new Point(2,2);
superVector.add(superPoint);
superVector.add(superPoint2);
XMLEncoder encXML;
try
{
encXML = new XMLEncoder(new BufferedOutputStream(new FileOutputStream(
"ser.xml")));
encXML.writeObject(superVector);
encXML.close();
}
catch (FileNotFoundException e)
{
}
}
}
ser.xml ficou assim:
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.5.0_03" class="java.beans.XMLDecoder">
<object class="java.util.Vector">
<void method="add">
<object class="java.awt.Point">
<int>1</int>
<int>1</int>
</object>
</void>
<void method="add">
<object class="java.awt.Point">
<int>2</int>
<int>2</int>
</object>
</void>
</object>
</java>
po ai funcionou, nao da para entender! Eu tou usando o JAVA 1.5.3, e nao entendi o link que vc me passou? O que eu devo fazer???
Obrigado!!!
foia
Junho 19, 2005, 10:42am
#12
ao q parece na versão 1.4.x existia esse bug.
posta o xml que o teu programa gera.
corvao
Junho 19, 2005, 8:57pm
#13
ta ai…
<?xml version="1.0" encoding="UTF-8" ?>
- <java version="1.5.0_03" class="java.beans.XMLDecoder">
- <object class="java.util.Vector">
- <void method="add">
- <object class="br.pucpr.elements.Retangulo">
- <void property="colorB">
- <object class="java.awt.Color">
<int>102</int>
<int>255</int>
<int>102</int>
<int>255</int>
</object>
</void>
- <void property="colorP">
- <object class="java.awt.Color">
<int>255</int>
<int>0</int>
<int>0</int>
<int>255</int>
</object>
</void>
- <void property="opaque">
<boolean>true</boolean>
</void>
</object>
</void>
</object>
</java>
só ta faltando os pontos, que odio isso!! será que tu sabe alguma solução???
valeu
flws
foia
Junho 19, 2005, 9:18pm
#14
tem certeza que está incluindo os Point no Vetor !?
troca o Vector por ArrayList.
chutômetro puro !! :mrgreen:
cv1
Junho 19, 2005, 9:33pm
#15
Qual foi o codigo que vc usou pra fazer isso com XStream? Aqui eu nunca tive problemas…
corvao
Junho 19, 2005, 9:48pm
#16
[quote=foia]- tem certeza que está incluindo os Point no Vetor !?
troca o Vector por ArrayList.
chutômetro puro !! :mrgreen: [/quote]
Ja tinha pensado nisso, mas antes fui fazer uma tentativa, olha soh:
tentei passar uma coisa bem simples para xml:
private Point p = new Point(2,2);
hehe ele nao grava, o problema é com o Point mesmo!! foddaaa!!!
corvao
Junho 19, 2005, 9:51pm
#17
Olha kra eu usei no esquema aqui do tutorial do GUJ, mas os problemas foram:
<?xml version="1.0" encoding="UTF-8" ?>
- <java version="1.5.0_03" class="java.beans.XMLDecoder">
- <object class="java.util.Vector">
- <void method="add">
- <object class="br.pucpr.elements.Retangulo">
- <void property="colorB">
- <object class="java.awt.Color">
<int>102</int>
<int>255</int>
<int>102</int>
<int>255</int>
</object>
</void>
- <void property="colorP">
- <object class="java.awt.Color">
<int>255</int>
<int>0</int>
<int>0</int>
<int>255</int>
</object>
</void>
- <void property="opaque">
<boolean>true</boolean>
</void>
</object>
</void>
</object>
</java>
Usando o XStream ele nao salva como acima, ele salva mo zoneado, nao cria por exemplo:
ele fica tudo em preto, nao fica como um xml, com as tags e etc, será que você nao poderia me passar por e-mail como vc fez???
Valeussss
cv1
Junho 19, 2005, 9:55pm
#18
corvao (belo nome, seus pais devem estar orgulhosos :mrgreen:), posta aqui o codigo que vc usou pra serializar os objetos usando o XStream. Provavelmente tem algum vacilo ali.
corvao
Junho 19, 2005, 10:04pm
#19
XStream xstream = new XStream();
String primitivasXML= xstream.toXML(vetElements);
/*
* vetElements é um Vector;
* Esse Vector contem vários objetos, esses objetos são AbstractPrimitiva
*que tem os atributos Cor de Borda, Cor de Fundo, String, numPontos,
*Fonte, Boolean opaque, Um vector(que contem um ou 2 pontos da
*java.awt.Point), e + os metodos da classe
*/
XMLEncoder encXML;
try {
encXML = new XMLEncoder(
new BufferedOutputStream(
new FileOutputStream( "teste.xml" )));
encXML.writeObject(primitivasXML);
encXML.flush();
encXML.close();
isso ae, qual o erro???
olá, consegui gerar o xml usando seu exemplo, como faço para fazer o inverso…ler o xml e gerar um Vector?
meu xml:
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.6.0_01" class="java.beans.XMLDecoder">
<object class="java.util.Vector">
<void method="add">
<array class="java.lang.String" length="2">
<void index="0">
<string>Uliana</string>
</void>
<void index="1">
<string>32487954</string>
</void>
</array>
</void>
<void method="add">
<array class="java.lang.String" length="2">
<void index="0">
<string>Paulo</string>
</void>
<void index="1">
<string>38452597</string>
</void>
</array>
</void>
<void method="add">
<array class="java.lang.String" length="2">
<void index="0">
<string>Uliana</string>
</void>
<void index="1">
<string>84569874</string>
</void>
</array>
</void>
<void method="add">
<array class="java.lang.String" length="2">
<void index="0">
<string>Uliana</string>
</void>
<void index="1">
<string>95369874</string>
</void>
</array>
</void>
</object>
</java>
meu codigo:
Vector v = new ExecutarSql().consultaTodosContatos();// retorna um Vector de String [2]
XMLEncoder encXML;
try
{
encXML = new XMLEncoder(new BufferedOutputStream(new FileOutputStream(
"C:\\teste.xml")));
encXML.writeObject(v);
encXML.close();
}
catch (Exception e)
{
System.out.println("Erro: "+e);
}
Obrigado.