# DB 2 XML



## Newcomer2007 (7. Mai 2007)

Hallo zusammen,

möchte aus Performancen Gründen meine statischen Daten nicht aus der Datenbank, sondern aus einer XML Datei lesen.

Kann mir jemand sagen wie ich ein erzeugtes File im XML Format ablegen kann.
Oder muss ich meine Tags von Hand einrücken ? :bahnhof:


```
das ist mein code
      Statement stmt = this.conn.getConnection().createStatement();
      ResultSet rs = stmt
          .executeQuery("Select * from demokunde");

      ResultSetMetaData meta = rs.getMetaData();

      int columnCount = meta.getColumnCount();
      Object obj = null;
      File file = new File("C:/xmlTest/",
      "TestDatei.xml");
      OutputStream os = new FileOutputStream(file); 
      PrintStream ps = new PrintStream(os);
      
      ps.println("<Table name='DEMOKUNDE'>");
      
      while (rs.next())
      {
        ps.print("<Kunde");
        for (int i = 1; i <= columnCount; i++)
        {
          obj = rs.getObject(i);
          ps.print(meta.getColumnName(i) + "='");
          

          if (rs.wasNull())
          {ps.print("isNull' ");
            
          }
          else
            ps.print(obj.toString() + "' ");  
          
        }
        ps.println("</Kunde>");
      }
      ps.println("</Table>");
      
      
      os.close();
      

    }
    catch (SQLException e)
    {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    catch (FileNotFoundException e)
    {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    catch (IOException e)
    {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
```

Danke

Viele Grüße
Newcomer2007


----------



## André Uhres (10. Mai 2007)

Newcomer2007 hat gesagt.:
			
		

> ..Oder muss ich meine Tags von Hand einrücken ?..


Es geht auch automatisch, wenn man ein XML Dokument erstellt ("org.w3c.dom.Document")
und dieses mit einem "javax.xml.transform.Transformer" in eine XML-Datei verwandelt:

```
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
```
Das funktioniert mit Java 4 und Java 6.
Java 5 hat diesbezüglich einen Bug, so daß es damit leider nicht funktioniert.


----------



## Newcomer2007 (15. Mai 2007)

Danke für den Tipp.
Arbeite zur Zeit noch mit Java 5, werde mir das aber für die Zukunft merken


----------

