# Objekt als XML serialisieren



## Passer (13. Oktober 2005)

Tagchen zusammen,

ich habe vor, ein Objekt als XML-Repräsentation zu speichern:

bspw:

```
public class Configs
{
    String path = "hallo";
    String user = "5";
    int password = 123456;
}
```

als XML Repräsentation, gern auch mit Verschachtelungen für "Unterobjekte".

In C# war das alles relativ einfach. Bei Java hingegen finde ich nur irgendwelche Frameworks, die ich für so einen "pipifax" tunlichst nicht extra einbinden wollte.

Ich habe auch gelesen, dass es bei Java 5 die Möglichkeit geben soll, Objekt-Properties als XML speichern zu können. Allerdings habe ich da auch nicht mehr, als diese Aussage gefunden.

Wäre schön, wenn da jemand eine elegante und einfache Lösung parat hätte.

MfG
Passer


----------



## bl4ck29 (13. Oktober 2005)

also es geht mit jdom was relativ weit verbreitet ist und auch relativ umfangreich ist und es gibt ne "abgespeckte" version die für einfache serialisierungen in xml ganz nett ist. http://xstream.codehaus.org/ da findeste nähere infos dazu und die entsprechen jars zum einbinden inkl tutorial.


----------



## Passer (13. Oktober 2005)

an sich hatte ich darauf gehofft, keine extra jar dateien einbinden zu müssen.

Evt diese  Java 5 Lösung, wenn da jemand was näheres drüber weiss


----------



## Thomas Darimont (13. Oktober 2005)

Hallo!

  Schau mal hier:

```
/**
   * 
   */
  package de.tutorials;
  
  import java.beans.XMLDecoder;
  import java.beans.XMLEncoder;
  import java.io.FileInputStream;
  import java.io.FileOutputStream;
  
  /**
   * @author Tom
   * 
   */
  public class XMLSerializationExample {
  	/**
  	 * @param args
  	 */
  	public static void main(String[] args) throws Exception {
  		XMLEncoder encoder = new XMLEncoder(new FileOutputStream("c:/bean.xml"));
  		Bean bean = new Bean(12, "aaa");
  		encoder.writeObject(bean);
  		System.out.println(bean);
  		encoder.close();
  
  		XMLDecoder decoder = new XMLDecoder(new FileInputStream("c:/bean.xml"));
  		Bean bean0 = (Bean) decoder.readObject();
  		System.out.println(bean0);
  	}
  }
```
  Unser Bean:

```
package de.tutorials;
  
  public class Bean {
  
  	private int propertyA;
  
  	private String propertyB;
  
  	public Bean() {
  
  	}
  
  	public Bean(int a, String b) {
  		this.propertyA = a;
  		this.propertyB = b;
  	}
  
  	public int getPropertyA() {
  		return propertyA;
  	}
  
  	public void setPropertyA(int propertyA) {
  		this.propertyA = propertyA;
  	}
  
  	public String getPropertyB() {
  		return propertyB;
  	}
  
  	public void setPropertyB(String propertyB) {
  		this.propertyB = propertyB;
  	}
  
  	public String toString() {
  		// TODO Auto-generated method stub
  		return super.toString() + " " + this.propertyA + " " + this.propertyB;
  	}
  }
```
 
  Das erzeugte XML (c:/bean.xml):

```
<?xml version="1.0" encoding="UTF-8"?> 
  <java version="1.5.0_05" class="java.beans.XMLDecoder"> 
   <object class="de.tutorials.Bean"> 
    <void property="propertyA"> 
     <int>12</int> 
    </void> 
    <void property="propertyB"> 
     <string>aaa</string> 
    </void> 
   </object> 
  </java>
```
 
 Das ganze gibt`s seit Java 1.4 ;-)

  Gruss Tom


----------

