# XML Datei erzugen durch Eingabedaten von JTextfield



## zickzack (25. Jan 2005)

Hallo,

ich muss jetzt ein Programm für Erzeugung einer XML Datei durch die Eingabedaten von User implementieren, und ich habe jetzt für den Eingaben 3 Panel jeweils mit 3 JTextFields aufgebaut,  man kann dadurch irgendwas eingeben, am Ende soll eine XML Datei davon erstellt werden. 

Ich habe für DOM Document folgendes definiert:

        // Für das DOM Document 
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
	DocumentBuilder db = dbf.newDocumentBuilder();
 	Document doc = db.newDocument();
	Element root = doc.createElement("Eingabe");
	doc.appendChild(root);	
        Element name = doc.createElement("Name");
        root.appendChild(name);
         ...........
         ...........

und dann für jede JTextField: 

         Text tName = doc.createTextNode(jTextField1.getText());
	 name.appendChild(tName);
         ............
         ............

Zum Schluss kann es von DOM Document eine XML Datei erzeugen.

Ich weiss nicht ob das richtig ist.  Problem wäre
1. wie ich die Eingabedaten korrigieren kann? z.B ich bin fertig mit den ersten Panel, gehe ich zu 2.Panel und gebe was ein, und dann wieder zurück zu 1. Panel um etwas zu korrigieren.

2. wie kann ich die eben erzeugte XML Datei wieder einlesen, und die Daten in den entsprechenden JTextField erscheinen lassen, damit man sie bearbeiten und am Ende wieder als XML Format speichern kann.

3. Wie kann man die Format der erzeugten XML Datei einstellen, durch CSS oder XSL? 

Vielen vielen Dank


----------



## foobar (25. Jan 2005)

Du solltest nicht direkt aus den Textfeldern auf den Dombaum zugreifen. Schreib dir besser eine oder mehrere Entity-Klassen (Person, Address etc.) und persistiere diese in einer anderen Klasse mittels DOM/JDOM.



> 3. Wie kann man die Format der erzeugten XML Datei einstellen, durch CSS oder XSL?


Mit CSS kannst du den XMLdatenstrom später formatieren oder mit XSl nach Html wandeln. Kannst du alles im Selfhtml nachlesen ;-)



> 2. wie kann ich die eben erzeugte XML Datei wieder einlesen, und die Daten in den entsprechenden JTextField erscheinen lassen, damit man sie bearbeiten und am Ende wieder als XML Format speichern kann.


Guckst du hier http://www.java-forum.org/de/viewtopic.php?t=8325&highlight=dom



> 1. wie ich die Eingabedaten korrigieren kann? z.B ich bin fertig mit den ersten Panel, gehe ich zu 2.Panel und gebe was ein, und dann wieder zurück zu 1. Panel um etwas zu korrigieren.


Ich verstehe das Problem nicht


----------



## Guest (25. Jan 2005)

fHallo, 

erstmal vielen Dank für deine Hilfe. 

zu den Entity-Klassen habe ich nicht ganz verstanden, kannst du ein bisschen mehr erklären oder mir ein Beispiel geben?
Wenn ich z.B 50 verschiedenen Entity habe, muss ich für jede eine Klasse definieren? und wenn man z.B 2 Namen für Author eingeben muss, wie soll ich dann die Klasse bauen?

Und ich glaube, meine 3. Frage könnte gelöst werden, wenn ich die obenliegende Sache verstanden habe.


----------



## foobar (26. Jan 2005)

> und wenn man z.B 2 Namen für Author eingeben muss, wie soll ich dann die Klasse bauen?


Was meinst du mit 2 Namen? Vor- und Nachname?



> zu den Entity-Klassen habe ich nicht ganz verstanden, kannst du ein bisschen mehr erklären oder mir ein Beispiel geben?


Ich würde das Programm erstmal grob in 2 Schichten aufteilen: Geschäftslogik und View. Um Daten zwischen den einzelnen Schichten auszutauschen kommen ValueObjects (Entities) zum Einsatz. Die Geschäfstlogikklasse könnte dann ungefähr so aussehen:


```
class AuthorManager
{
  public List loadAuthors()
  {
      // create Domtree
      // build List of AuthorVO's 
      //return List
   } 

 public void storeAuthors(List authors)
 {
    // create Dometree of AuthorVO 's
    // write Domtree to file
 }
}
```

Author ValueObject:

```
class AuthorVO
{
   private String firstName, lastName;
   public AuthorVO(String fn, String ln)
   {
      this.firstName = fn;
      this.lastName = ln;
   }
...
 // Getter and Setter

...
}
```


Die Viewebene ruft dann die Methoden loadAuthor und storeAuthor auf um AuthorVo-Objekte zu erhalten respektive um diese zu speichern.



> Und ich glaube, meine 3. Frage könnte gelöst werden, wenn ich die obenliegende Sache verstanden habe.


Konzentrier dich erstmal auf das Wesentliche. Kleinigkeiten wie Stylesheets kann man nacher immer noch hinzufügen.


----------

