Java - problema defaultmutabletreenode a XML

 
Vista:

problema defaultmutabletreenode a XML

Publicado por Carlos (1 intervención) el 12/05/2011 12:05:42
Hola, estoy desarrolllando una API y tengo que almacenar en un XML una serie de objetos que contienen listas de otros objetos, y uno de estos objetos tiene como atributo un DefaultMutableTreeNode, cuyos nodos almacenan una clase creada por mi.

He probado usando xStream, sobre el objeto principal que contiene las referencias a los demas:

1
2
3
XStream xstream=new XStream();
        String xml = xstream.toXML(this);
        System.out.println(xml);



el resultado es la estructura completa de las clases, pero sin la información dentro de cada nodo:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<api.Salida>
  <listaFrames>
    <api.Escena>
      <n__escena>0</n__escena>
      <listaRamas>
        <api.Rama>
          <n__rama>0</n__rama>
          <neurita serialization="custom">
            <javax.swing.tree.DefaultMutableTreeNode>
              <default>
                <allowsChildren>true</allowsChildren>
                <children>
                  <javax.swing.tree.DefaultMutableTreeNode serialization="custom">
                    <javax.swing.tree.DefaultMutableTreeNode>
                      <default>
                        <allowsChildren>true</allowsChildren>
                        <parent class="javax.swing.tree.DefaultMutableTreeNode" reference="../../../../../../.."/>
                      </default>
                      <object-array/>
                    </javax.swing.tree.DefaultMutableTreeNode>
                  </javax.swing.tree.DefaultMutableTreeNode>
                  <javax.swing.tree.DefaultMutableTreeNode serialization="custom">
                    <javax.swing.tree.DefaultMutableTreeNode>
                      <default>
                        <allowsChildren>true</allowsChildren>
                        <children>
                          <javax.swing.tree.DefaultMutableTreeNode serialization="custom">
                            <javax.swing.tree.DefaultMutableTreeNode>
...
...
...etc




La cosa está en que cuando cojo este xml y lo vuelvo a convertir en un objeto, como es lógico, los nodos del árbol tienen el valor null.

Si pongo el DefaultMutableTreeNode en modo static, el archivo xml queda así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<api.Salida>
  <listaFrames>
    <api.Escena>
      <n__escena>0</n__escena>
      <listaRamas>
        <api.Rama>
          <n__rama>0</n__rama>
        </api.Rama>
      </listaRamas>
    </api.Escena>
    <api.Escena>
      <n__escena>1</n__escena>
      <listaRamas>
        <api.Rama>
          <n__rama>0</n__rama>
        </api.Rama>
      </listaRamas>
    </api.Escena>
  </listaFrames>
</api.Salida>



Aquí solo se observa la estructura de la clase principal, ¿Por qué pasa esto? Yo creia que lo que debia hacer era guardar cada clase en un xml distinto, pero comprobe con otra estructura de objetos que contenian atributos int y string y funcionó perfectamente.

aun intentando guardar solo el objeto que contiene el DefaultTreeNode en un xml no consigo nada. ¿Que debo utilizar?

He leido que la gente utiliza XMLEncoder para construir un xml de un JTree, pero he intentado utilizarlo con la clase que tiene un DefaultTreeNode:


1
2
3
4
5
XMLEncoder e = new XMLEncoder(
                new BufferedOutputStream(
                    new FileOutputStream("E:/Test.xml")));
		e.writeObject(s1);
		e.close();




y el resutado es:


1
2
3
4
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.6.0_24" class="java.beans.XMLDecoder">
 <object class="api.Salida"/>
</java>



No aparece ningún atributo de mi clase, no se que debo hacer.

Si alguien me puede orientar un poco, es la primera vez que manejo java y estoy un poco abrumado.


Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder