Von Swing nach XML

Status
Nicht offen für weitere Antworten.

Alex_winf01

Top Contributor
Folgendes Beispiel:

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class TextFieldDemo {
    public static void main( String[] args ) {
        TextfieldFrame frm = new TextfieldFrame();
        frm.setVisible( true );
        frm.pack();
    }
}

class TextfieldFrame extends JFrame {
    public TextfieldFrame() {
        super( "Textfeld Demo" );

        addWindowListener(
            new WindowAdapter() {
                public void windowClosing(
                    WindowEvent ev
                ) {
                    System.exit( 0 );
                }
            }
        );

        Container cp = getContentPane();
        JPanel p = new JPanel();

        JLabel lbl = new JLabel( "Login" );
        lbl.setDisplayedMnemonic( KeyEvent.VK_L );
        lbl.setToolTipText(
            "Login-Namen eingeben"
        );
        p.add( lbl );
        lbl.setVerticalAlignment(
            SwingConstants.CENTER
        );
        JTextField tf = new JTextField( 10 );
        p.add( tf );
        lbl.setLabelFor( tf );

        lbl = new JLabel( "Kennwort" );
        lbl.setDisplayedMnemonic( KeyEvent.VK_K );
        lbl.setToolTipText(
            "Kennwort eingeben"
        );
        p.add( lbl );
        JPasswordField pf =
            new JPasswordField( 10 );
        p.add( pf );
        lbl.setLabelFor( pf );
        lbl.setVerticalAlignment(
            SwingConstants.CENTER
        );

        cp.add( p );
    }
}

Nur so als Beispiel. Wie könnte ich jetzt aus den zwei Textfeldern eine XML-Datei machen bzw. Daten aus einer XML-Datei auslesen?

Vielen Dank schon mal im voraus.

[Edit by Beni: Codetags]
 

Wildcard

Top Contributor
Aus Textfeldern eine XML-Datei machen? ???:L
Es geht dir um Daten wenn ich dich richtig verstehe?
Du solltest immer auf die Trennung zwischen Model View und Controller achten, weshalb Swing in dieser Gleichung nichts verloren hat.
Um XML Daten in Java zu verwenden kann man entweder einen Parser verwenden, oder (IMO besser) ein Binding Framework wie EMF oder JaxB verwenden.
 

abollm

Top Contributor
Alex_winf01 hat gesagt.:
Folgendes Beispiel:
[..]
Nur so als Beispiel. Wie könnte ich jetzt aus den zwei Textfeldern eine XML-Datei machen bzw. Daten aus einer XML-Datei auslesen?

[..]

Verstehe ich dich richtig, dass du für eine Login-Maske z.B. den String für den Usernamen aus einer XNL-Datei lesen und in das betreffende Textfeld einfügen willst?
 

Alex_winf01

Top Contributor
Das oben war auch nur ein Beispeil. Um weiter auszuholen:

Ich habe ein bestimmtes Formular vorliegen als Eingabemaske (mit Textfeldern, Checkboxen usw. usw.). Aus diesem Formular heraus muss ich ein Export der Daten nach XML machen bzw. einen Import aus einer XML-Datei heraus. Heisst: Ich habe beliebig viele Textfelder (als Beispiel habe ich die Login-Maske genommen), ich habe dann eine Schaltfläche "Export" und eine Schaltfläche "Import". Klickt der Anwender auf "Export", werden die eingegebenen Daten in die XML-Datei geschrieben. Klickt der Anwender auf "Import", werden die Datenfelder aus der XML-Datei gelesen und in die Maske geschrieben.
 

abollm

Top Contributor
André Uhres hat gesagt.:
Alex_winf01 hat gesagt.:
..Ich habe beliebig viele Textfelder..
Kein Problem mit XMLEncoder. Du kannst sogar ein Array (oder List) von Textfeldern in der Bean haben :wink:

Sieht ja ganz ok aus, nur frage ich mich, wie man die XML-Struktur frei definieren kann.
Hier mal ein XML-Output, anhand deines Beispiels:

Code:
<?xml version="1.0" encoding="UTF-8"?> 
<java version="1.6.0-beta" class="java.beans.XMLDecoder"> 
 <object class="LoginData"> 
  <void property="pf"> 
   <void property="text"> 
    <string>blubber</string> 
   </void> 
  </void> 
  <void property="tf"> 
   <void property="text"> 
    <string>blubb</string> 
   </void> 
  </void> 
 </object> 
</java>

Frage: Wie kann ich anstatt obiger XML-Struktur die folgende Struktur angelehnt an das Beispiel des OP erzeugen?

Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<Properties>
  <Property user="bla">
    <Host>LOCAL</Host>
  <Property user="blubb">
    <Host>LOCAL</Host>
  </Property>
</Properties>
 

André Uhres

Top Contributor
abollm hat gesagt.:
..nur frage ich mich, wie man die XML-Struktur frei definieren kann..
Die Datei ist für XMLDecoder gedacht (das steht ja auch drin).
Das entspricht der Idee von Alex_winf01 in Bezug auf Export/Import.
Von einer bestimmten Dateistruktur ist nicht die Rede gewesen.
Für sowas würde wohl eher der obige Beitrag von Wildcard zutreffen.
 

Alex_winf01

Top Contributor
Mal angenommen, ich habe eine bestimmte Dateistruktur vorliegen. Wie würde das dann aussehen?

Angenommen, die Dateistruktur der XML-Datei soll so aussehen:



Code:
<?xml version="1.0" encoding="UTF-8"?> 
<login></login>
<passwort></passwort>

Dabei soll dann unter <login></login> der Wert im Textfeld Login stehen und unter <passwort></passwort> der Wert im Textfeld Passwort.
 

abollm

Top Contributor
Alex_winf01 hat gesagt.:
Mal angenommen, ich habe eine bestimmte Dateistruktur vorliegen. Wie würde das dann aussehen?

Angenommen, die Dateistruktur der XML-Datei soll so aussehen:



Code:
<?xml version="1.0" encoding="UTF-8"?> 
<login></login>
<passwort></passwort>

Dabei soll dann unter <login></login> der Wert im Textfeld Login stehen und unter <passwort></passwort> der Wert im Textfeld Passwort.

Dann müsstest du die Struktur mit einem auf dem Markt befindlichen XML-Parser entsprechend lesen und füllen.

Frage: Willst du die Struktur auch automatisch nach bestimmten Kriterien erstellen oder reicht es dir, eine gegebene Struktur wertemäßig zu lesen und zu schreiben?
 

abollm

Top Contributor
Alex_winf01 hat gesagt.:
Zunächst würde es mir reichen, wenn ich eine bestehende Struktur wertmäßig lese und schreibe.

Gut, dann reicht es aus, wenn du mit einem auf dem Markt befindlichen XML-Parser die einzelnen Werte liest und schreibst.

Ich mache das übrigens neuerdings gerne mit Saxon, der natürlich sehr viel mehr kann als nur das eben Beschriebene.
 

Alex_winf01

Top Contributor
Ich hab bisher nicht mit Parsern gearbeitet. Wie müsste dass dann Code-mäßig aussehen? Parser installieren ist klar. Und dann?
 

abollm

Top Contributor
Alex_winf01 hat gesagt.:
Ich hab bisher nicht mit Parsern gearbeitet. Wie müsste dass dann Code-mäßig aussehen? Parser installieren ist klar. Und dann?

Sehr grob betrachtet sollte es in etwa wie folgt gehen (Auzug aus einem realem Stück Code):

Code:
 ...
           HandleXMLProperties                       pxml;
           ...
           // Properties zum Programmbeginn oder wann auch immer du willst lesen
        	pxml = new HandleXMLProperties();
            //
        	try {
				pxml.loadXMLFile("MyProps.xml");
				dbHost = pxml.getPropertyParameter("1", "N_Host");
                                ...
			       	encryptedPassword4Path = pxml.getPropertyParameter("666", "N_PW4MI4PF");
			} catch (JDOMException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
           ...
           // Properties zum Programmende oder wann auch immer du willst  schreiben

            	try {
    				pxml.setPropertyParameter("1", "N_Host",dbHost);
                                ...
    				pxml.writeXMLFile("MyProps.xml");
            	} catch (JDOMException je) {
    				// TODO Auto-generated catch block
    				...
    				je.printStackTrace();
    			} catch (IOException ioe) {
    				// TODO Auto-generated catch block
    				...
                  ioe.printStackTrace();
    			}
              ...

Das ist zum Lesen und Schreiben der einzelnen Parameter. Dabei ist die so genannte Parameter-XML-Datei (MyProps.xml) grundsätzlich wie folgt aufgebaut:

Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<Properties>
  <Property ID="1">
    ...
    <N_Host>ORA_9207</N_Hostt>
   ... 
  </Property>
  <Property ID="666">
    ...
    <N_PW4MI4PF>rRl1nAldvwC/4ul3QML9+Q==</N_PW4MI4PF>
    ...
  </Property>
</Properties>

Übrigens wird im kompletten Code das Element "N_PW4MI4PF" explizit nicht geschrieben, weil es sich um ein verschlüsseltes Kennwort handelt, das nur administrative Nutzer kennen und diese zudem nicht einfach in der Anwendung verändern dürfen/können.

Daneben müsstest du jetzt noch den Code der Klasse HandleXMLProperties kennen:

Code:
package com....

import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.xpath.XPath;

public class HandleXMLProperties extends XMLHandler {

	public void setPropertyParameter(String id, String tagName, String tagValue)
			throws JDOMException {
		String xpath = "/Properties/Property[@ID = \"" + id + "\"]/" + tagName;
		Element tag = (Element) XPath.selectSingleNode(mXMLDocument, xpath);
		tag.setText(tagValue);
	}

	public String getPropertyParameter(String id, String tagName) throws JDOMException {
//		String xpath = "/Properties/Property"; //[@ID = \"" + id + "\"]";
//		Element property = (Element) XPath.selectSingleNode(mXmlFma, xpath);
		String xpath = "/Properties/Property[@ID = \"" + id + "\"]/" + tagName;
		Element tag = (Element) XPath.selectSingleNode(mXMLDocument, xpath);
		return tag.getText();

	}

}

Daraus und aus dem anderen Code sowie den gegebenen Erläuterungen müsstest du dir das in etwa zusammenbauen können , was du möchtest.

Hth
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Swing Buttons erst nach Klick sichtbar AWT, Swing, JavaFX & SWT 13
E Swing Componenten werden nach Änderung des display modes verzerrt dargestellt AWT, Swing, JavaFX & SWT 8
J Swing: JFrame nach oben "aufklappen" AWT, Swing, JavaFX & SWT 0
M Frage nach Swing Element AWT, Swing, JavaFX & SWT 3
K Swing App nach WebGUI AWT, Swing, JavaFX & SWT 7
J Anwendung von Swing nach SWT bzw. Eclipse portieren AWT, Swing, JavaFX & SWT 3
W Suche großes vollständiges Swing GUI Beispiel nach MVC Model AWT, Swing, JavaFX & SWT 5
M Java mit Swing - Elemente erst nach klick sichtbar AWT, Swing, JavaFX & SWT 13
K Canvas mit KeyListener von AWT nach Swing ? AWT, Swing, JavaFX & SWT 3
M GUI mit Swing erst nach Maximieren richtige Anzeige AWT, Swing, JavaFX & SWT 2
A Swing JFrame / JPanel Grösse soll sich nach Inhalt richten. AWT, Swing, JavaFX & SWT 2
H Swing nach schließen noch sichtbar AWT, Swing, JavaFX & SWT 4
J Knoten in Eclipse Swing Fenster werden nur zentral angezeigt (Position wird ignoriert) AWT, Swing, JavaFX & SWT 2
Juelin javax.swing in javafx AWT, Swing, JavaFX & SWT 1
A Eclipse 2023 und Swing AWT, Swing, JavaFX & SWT 4
W 2 JTables in einem Swing-Fenster? AWT, Swing, JavaFX & SWT 5
H Swing Componente zur Läufzeit ändern AWT, Swing, JavaFX & SWT 3
B Actionlistener mit Java Swing AWT, Swing, JavaFX & SWT 2
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
ExceptionOfExpectation Anpassung von JKomponentengrößen (Swing) AWT, Swing, JavaFX & SWT 3
thor_norsk AWT SWING Aufgabe AWT, Swing, JavaFX & SWT 7
U Zwei Fragen zu eienr Swing Aufgabe AWT, Swing, JavaFX & SWT 2
M Swing Bilder in Swing anzeigen AWT, Swing, JavaFX & SWT 9
H Swing , GridLayout, Größenbestimmung der Komponenten im Layout AWT, Swing, JavaFX & SWT 8
H Simple Animation mit Swing AWT, Swing, JavaFX & SWT 2
Guybrush Threepwood Einfachste Möglichkeit zum Abspielen eines Videos in Swing AWT, Swing, JavaFX & SWT 4
A Swing ProgressBar über 2 parallel laufende Threads AWT, Swing, JavaFX & SWT 2
M Swing GridLayout AWT, Swing, JavaFX & SWT 2
O return-Statement mit Swing AWT, Swing, JavaFX & SWT 6
O Ein Java-Programm mit Swing steuern AWT, Swing, JavaFX & SWT 1
Monokuma Swing zu JavaFX AWT, Swing, JavaFX & SWT 5
J Swing Slider AWT, Swing, JavaFX & SWT 11
G Thread starten Swing AWT, Swing, JavaFX & SWT 5
G Swing JPasswordField AWT, Swing, JavaFX & SWT 12
L Swing Button Farbe ändern/wechseln AWT, Swing, JavaFX & SWT 2
C Swing AWT GUI Anfänger Aufgabe AWT, Swing, JavaFX & SWT 7
W Inject bei einem Swing Frontend AWT, Swing, JavaFX & SWT 8
L Kommunikation zwischen Klassen / Konstruktoren bei Swing AWT, Swing, JavaFX & SWT 9
M Feldvalidierung swing AWT, Swing, JavaFX & SWT 4
D [Swing] Anordnung von Komponenten mit GridLayout Manager AWT, Swing, JavaFX & SWT 13
O Zukunft von Swing und JavaFX ? AWT, Swing, JavaFX & SWT 3
S Swing Fenster State Machine AWT, Swing, JavaFX & SWT 1
T Swing Swing an Bildschirm anpassen AWT, Swing, JavaFX & SWT 3
S Swing Panel wird nicht neu gezeichnet AWT, Swing, JavaFX & SWT 3
M Swing Java Swing/AWT Combobox Bug AWT, Swing, JavaFX & SWT 3
M Swing GUI mittels erben sowie variabler Dateninhalt AWT, Swing, JavaFX & SWT 1
W Swing Multitouch mit Swing AWT, Swing, JavaFX & SWT 6
S Swing-Applikation die ein Numpad nachbildet samt Keybindings..? AWT, Swing, JavaFX & SWT 5
S Swing Java Swing AWT, Swing, JavaFX & SWT 6
Blender3D Problem mit € Symbol Font Gotham Windows 10 Swing AWT, Swing, JavaFX & SWT 11
J Swing oder JavaFX AWT, Swing, JavaFX & SWT 21
D Swing Anwendung ohne JPanel erstellen AWT, Swing, JavaFX & SWT 1
D SQL Statements mit Java Swing benutzen AWT, Swing, JavaFX & SWT 4
Damtonix BufferStrategy flackert (Swing) AWT, Swing, JavaFX & SWT 9
D DatePicker für Java Swing AWT, Swing, JavaFX & SWT 2
B JavaFX oder swing AWT, Swing, JavaFX & SWT 3
T Java Swing - kleines Rechteck unter dem cursor AWT, Swing, JavaFX & SWT 5
L 2D-Grafik Swing paint|paintComponent AWT, Swing, JavaFX & SWT 2
L Swing Größe automatisch anpassen AWT, Swing, JavaFX & SWT 14
G Swing Swing Binding JList funktioniert nicht AWT, Swing, JavaFX & SWT 5
Blender3D Meine Swing Anwendung läuft unter Windows 10 und Ubuntu aber nicht auf Windows 7 AWT, Swing, JavaFX & SWT 16
B Bar Plot in Swing JPanel AWT, Swing, JavaFX & SWT 0
D Swing in Kombination mit JGraphX und JGraphT AWT, Swing, JavaFX & SWT 0
F main-Funktion bei Swing AWT, Swing, JavaFX & SWT 4
S Java Swing Print() method AWT, Swing, JavaFX & SWT 4
S Java Swing auf Windows Phone AWT, Swing, JavaFX & SWT 6
I JAVAFX - Übergabe der Inhalte an eine Scene - Wo ist der Vorteil gegenüber Swing? AWT, Swing, JavaFX & SWT 2
S Manuelles Menu in Swing AWT, Swing, JavaFX & SWT 3
T Custom Window ohne Swing / AWT / FX..?! AWT, Swing, JavaFX & SWT 1
MaxG. Swing Swing Komponenten zur Laufzeit hinzufügen AWT, Swing, JavaFX & SWT 2
Java_RY Bin Ratlos bzgl Malen in Swing AWT, Swing, JavaFX & SWT 5
offi Swing Shuttle List AWT, Swing, JavaFX & SWT 9
I Graph mit Swing zeichnen AWT, Swing, JavaFX & SWT 8
D Swing Swing Objekte sehen im Entwurf anders aus als beim Ausführen AWT, Swing, JavaFX & SWT 3
S Swing & Clean und build Problem AWT, Swing, JavaFX & SWT 12
javampir Swing repaint in JavaFX Anwendung AWT, Swing, JavaFX & SWT 3
K Mit JavaFX angefangen. Lohnt sich Swing? AWT, Swing, JavaFX & SWT 28
B Swing Update Swing Komponente bevor Methode startet. AWT, Swing, JavaFX & SWT 4
B Swing Tabelle(JTable) filtern swing GUI AWT, Swing, JavaFX & SWT 3
M Swing Swing-Widgets und paintComponent() AWT, Swing, JavaFX & SWT 2
B Swing WindowBuilde: Menu -> anderes Panel wechseln AWT, Swing, JavaFX & SWT 1
K eigener button in swing AWT, Swing, JavaFX & SWT 3
A JavaFX DatePicker in Swing beim Start nicht sichtbar AWT, Swing, JavaFX & SWT 2
windl Bufferstrategy in Swing nachstellen AWT, Swing, JavaFX & SWT 0
M Kamera in Java Swing einbinden AWT, Swing, JavaFX & SWT 4
Z Swing Swing und die Progressbar AWT, Swing, JavaFX & SWT 1
J Frage zur objektorentierten Swing Programmierung AWT, Swing, JavaFX & SWT 10
Xanny 2D-Grafik Beginner! Probleme mit Swing, Gprahics class und paint AWT, Swing, JavaFX & SWT 13
F Java Swing Rechteck in JPanel zeichnen AWT, Swing, JavaFX & SWT 7
N Swing Benötige Hilfe um ein Swing Canvas zu speichern AWT, Swing, JavaFX & SWT 4
stylegangsta JButton Fehelr javax.swing.ImageIcon.<init>(Unknown Source) AWT, Swing, JavaFX & SWT 24
RalleYTN Swing JavaFX VideoPlayer in Swing einbetten. Ich komm nicht an die Dimension des Videos! AWT, Swing, JavaFX & SWT 0
T swing läuft nur beding flüssig AWT, Swing, JavaFX & SWT 1
A Sonderzeichen bei Swing AWT, Swing, JavaFX & SWT 3
L DoubleBuffering unter Swing AWT, Swing, JavaFX & SWT 0
N Programm mit Swing und Thread, Figur bewegen sich nicht AWT, Swing, JavaFX & SWT 6
D Java Swing, Label lässt sich nicht mit Checkboxen/Knopf verändern AWT, Swing, JavaFX & SWT 2
J Swing Basics - JButton funktioniert nicht. AWT, Swing, JavaFX & SWT 1
J Swing/AWT | Dynamisch erzeugte Objekte ansprechen AWT, Swing, JavaFX & SWT 1
N JavaFX Umstieg von Swing auf Java FX AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen


Oben