# xml datei über gui ändern



## bernie (2. Jan 2007)

hallo zusammen,
ich stehe gerade etwas auf dem schlauch, viell kann mit jemand einen tipp geben ...

ich baue ein progrämmchen, dass eine xml-datei mit jdom parst und alle elemente, attribute und texte in einem gui als editierbare textfields darstellt. der benutzer kann die textfields also verändern. wenn er dann einen button "save" klickt, soll die xml mit allen änderungen gespeichert werden.

lesen und schreiben der xml-datei funktioniert. ich habe nach dem einlesen ein jdom Document, das ich auch wieder als File speichern kann(s. unten). nur: wie bekomme ich die änderungen in das Document?

tausend dank schonmal für jede hilfe! 

so lese/schreibe ich meine xml-datei:


```
public Document doRead(File xmlFile){
		
		Document doc = null;
	      try {
	    	  SAXBuilder builder = new SAXBuilder();
	    	  doc = builder.build( xmlFile ); 
	      } 
	      catch (Exception e) {
			  e.printStackTrace();
	      }
	      return doc;
	}
	
	public boolean doWrite(Document doc, File xmlFile){
		boolean success = false;
		try {
			XMLOutputter outp = new XMLOutputter();
			outp.setFormat(Format.getPrettyFormat());
			outp.output( doc, new FileOutputStream( xmlFile ) );
			success = true;
		} catch (Exception e) {
			e.printStackTrace();
		}        
		return success;
	}
```

beim klicken auf save wird geschrieben:


```
public void actionPerformed(java.awt.event.ActionEvent e) {
        String c = e.getActionCommand();

        if (c.equals("save")){ 
            doWrite(doc, outFile);
        }
    }
```


----------



## MarcelloBonventre (3. Jan 2007)

hallo,

also das erste was mir komisch vorkommt ist

beim schreiben:

```
if (c.equals("save")){
            doWrite(doc, outFile);
        }
```
da hätte ich auf Anhieb eher

```
if (c=="save"){
            doWrite(doc, outFile);
        }
```
geschrieben.

Aber das ist wohl nicht der Kern des Problems...
Ich verstehe noch nicht so ganz, wie Du auf die einzelnen Elemente in der GUI zugreifst und die dann in das _Document doc_ einfügst bevor Du dieses in die XML-Datei zurückschreibst...


Gruß Marcello


----------



## Guest (3. Jan 2007)

ja genau das ist die frage. ich weiss nicht, wie ich die geänderten infos aus den gui-textfields in das Document doc bekomme. ich dachte zuerst, dass das automatisch passiert, weil die textfield-inhalte ja auf Elements/Atttributes/Texts des Documents verweisen. beim einlesen der xml-datei habe ich ja die datei rekursiv durchlaufen und bei jedem element neue textfields erzeugt z.b.: 


```
JTextField f = new JTextField(e.getName());
JTextField f2 = new JTextField(e.getTextNormalize());
```

aber die änderungen in der gui bezieht sich ja trotzdem nicht direkt auf das Document. die frage ist, wie man diese verbindung herstellt.

schöne grüße, bernie


----------



## nocxsville (10. Jan 2007)

MarcelloBonventre hat gesagt.:
			
		

> also das erste was mir komisch vorkommt ist
> 
> beim schreiben:
> 
> ...



Ich persönlich finde equals in vielen Fällen sicherer als ein einfaches == (bei dem lediglich auf Referenzgleichheit geprüft wird) ... Das einzige, auf das man dabei achten sollte ist, eindeutige Strings zu verwenden.

Gruß,
nocxsville.


----------



## cluening (14. Jan 2007)

Guck mal hier vielleicht hilft das weiteR:

http://www.galileocomputing.de/open...sel13_005.htm#Rxx747java130050400047F1F03B262


----------

