JComboBox mit Daten aus config.xml befüllen

Tinipieps

Mitglied
Hallo!
Ich wollte eine JComboBox mit Daten aus einer XML-Datei befüllen.
Leider werden alle Einträge aus der xml-Datei zusammenhängend als Eintrag in der ComboBox ausgegeben.

XML-Datei:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<konfigurationen>
	<!--Adresse des Servers, ueber den Mail versendet werden soll-->
	<mailserver>mailserver.blabla.de</mailserver>

	<!--Festlegung aller moeglichen Absenderadressen-->
	<absender>
		<mail>Person1@blabla.de</mail>
		<mail>Person2@blabla.de</mail>
	</absender>

	<!--Festlegung aller Empfaengeradressen-->
	<empfaenger>
		<mail>Person1@blabla.de</mail>
		<mail>Person2@blabla.de</mail>
	</empfaenger>

	<!--Festlegung, ab manuell zusaetzliche Empfaenger eingetragen werden koennen-->
	<editierbar>nein</editierbar>
</konfigurationen>


Klasse, die Methode enthält, welche Absender aus XML ausliest
Code:
package adresses;

import java.io.File;
import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

import application.Application;

/**
 * Diese Klasse bietet alle Methoden, um die Konfigurationsdatei der 
 * moeglichen Absender auszulesen
 * @author Stepanski
 *
 */
public class Sender {
	
	/**
	 * Diese Methode liest Schlüssel der Datei aus 
	 * und schreibt diese dann in ein String[]
	 * @return  String[]  senderArray
	 */
	public static String[ ] getSender() {
		
		//String[] anlegen
		String [ ] senderArray = null;
		NodeList tableNameNodeList;
		String tableName;
		
		// Daten aus config.xml auslesen
		try{
			DocumentBuilderFactory factory = DocumentBuilderFactory.
															newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document document = builder.parse(new File(Application.path+
            												"config.xml"));
            //NodeList = Liste, in der Eintraege gesammelt werden, ohne
            //Implementierung festzulegen
            tableNameNodeList = document.getElementsByTagName("absender");
            tableName = null;
 
            if (tableNameNodeList.getLength() > 0){
            	senderArray = new String[tableNameNodeList.getLength()];
            	for (int i=0; i<tableNameNodeList.getLength(); i++){
                tableName = tableNameNodeList.item(i).
                							getTextContent().toString();
                senderArray[i] = tableName; 
                System.out.println(tableName);
                               
            }
		}
		}catch (IOException e){
            System.out.println("IO Fehler");
        }catch (ParserConfigurationException e){
            System.out.println("Parser Fehler");
        }catch (SAXException e){
            System.out.println("SAX Fehler");
        }
        
		return senderArray;		
	}
}

Klasse, die Methode getSender() benutzt:
Code:
package login;


import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Arrays;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

import adresses.Sender;
import client.Client;

/**
 * Diese Methode erzeugt ein LogIn-Fenster.
 * Bei Eingabe eines registrierten Nutzers mit dazugehörigem Passwort
 * wird das Hauptprogramm geöffnet.
 * @author Stepanski
 *
 */
public class LogIn extends JFrame{

	private static final long serialVersionUID = 1L;
	
	/*Attribute*/
	Container container;
	JPanel p;
	
	JLabel user;
	static JComboBox cb1;
	
	JButton login;
	
	/*Konstruktor*/
	/**
	 * Diese Methode enthält einen Konstruktor, welcher ein 
	 * LogIn-Fenster erzeugt.
	 */
	public LogIn(){
		super();
		this.createLogIn();
		
		this.setName("LogIn");
		this.setSize(400, 200);
		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
		int x = (d.width - getSize().width) / 2;
		int y = (d.height - getSize().height) / 2 ;
		setLocation(x, y);
		
		this.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
        this.setVisible(true);
        this.setResizable(false);
        this.pack();   		
	}

	/**
	 * Diese Methode legt das Aussehen des 
	 * Panels auf dem LogIn-Fenster fest.
	 */
	private void createLogIn() {
		
		Container cp = this.getContentPane();
		
		p = new JPanel();
		
		// GridBagLayout, um individuelles Aussehen zu ermöglichen
		GridBagLayout gbl = new GridBagLayout();
		p.setLayout(gbl);
		GridBagConstraints c = new GridBagConstraints();
		c.gridx = 0;
		c.gridy = 0;
		c.gridheight = 1;
		c.gridwidth = 1;
		c.insets = new Insets(10,10,10,10);
		
		user = new JLabel("Benutzername: ");
		p.add(user, c);
		
		////////////////////////////////////////////////////////////
        // ComboBox mit Adressen aufrufen
		cb1 =new JComboBox();
		c.gridx=1;
		c.gridwidth=2;
		p.add(cb1, c);
				
		fillSenderCombo();
		
		// KeyListener ermoeglicht Bestaetigung des Passwortes mit 
		// der Taste "ENTER"
		cb1.addKeyListener(new KeyListener () {

			@Override
			public void keyPressed(KeyEvent e) {
				int key = e.getKeyCode();
				if ( key == KeyEvent.VK_ENTER){
								
					// Liste aller angelegten Nutzer
					String nutzer = (String) cb1.getSelectedItem();
					System.out.println(nutzer);
					
					// neues Hauptfenster oeffnen
					Client client = new Client();
					client.setAbsender(nutzer);
							
					// LogIn-Fenster "unsichtbar" machen
					LogIn.this.setVisible(false);
					// gibt Speicher wieder frei
					dispose();
				}else
						JOptionPane.showMessageDialog(null, 
							"Anmeldung fehlgeschlagen",
							"Error Message", JOptionPane.ERROR_MESSAGE);				
			}

			@Override
			public void keyReleased(KeyEvent arg0) {
				
			}

			@Override
			public void keyTyped(KeyEvent arg0) {
				
			}
			
		});	
		
		login = new JButton("ENTER");
		c.gridx = 3;
		c.gridy = 2;
		c.insets = new Insets(20,10,10,0);
		p.add(login, c);
		
		// gleiche Aktion wie bei KeyListener, nur das diesmal auf 
		// druecken des Buttons reagiert wird
		login.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent evt) {
				String nutzer = (String) cb1.getSelectedItem();
				System.out.println("Nutzer: "+nutzer);
					
				LogIn.this.setVisible(false);
				// gibt Speicher wieder frei
				dispose();
					
				Client client = new Client();
				client.setAbsender(nutzer);
			}
		});
			
		cp.add(p, BorderLayout.CENTER);
		
	}
	
	/**
	 *  Diese Methode fuellt die JComboBox, welche im Auswahl-Dialog 
	 *  eingebettet wird
	 */
	public static void fillSenderCombo(){
		
		String [] adressen = Sender.getSender();
		Arrays.sort(adressen);
		for (String i:adressen) {
			System.out.println(i);
			cb1.addItem(i);
		}
	}
}

Ausgabe in JComboBox:

Ein Feld mit "Person1@blabla.orgPerson2@blabla.org"

Was habe ich falsch gemacht?
Wie bekomme ich es hin, dass beide Einträge einzeln in JComboBox aufgeführt werden?
 
Hallo,

xml ist noch nicht so meine Stärke, aber ich glaube, das Problem liegt in der Methode getSender().
Das Sysout nach
Code:
                senderArray[i] = tableName; 
                System.out.println(tableName);
müßte eigendlich hier schon "Person1@blabla.orgPerson2@blabla.org" ausgeben, oder?

MfG
hansmueller
 
Hallo,

xml ist noch nicht so meine Stärke, aber ich glaube, das Problem liegt in der Methode getSender().
Das Sysout nach
Code:
                senderArray[i] = tableName; 
                System.out.println(tableName);
müßte eigendlich hier schon "Person1@blabla.orgPerson2@blabla.org" ausgeben, oder?

MfG
hansmueller

Also in der Console wird folgende Ausgabe sichtbar:


Person1@blabla.org
Person2@blabla.org

Also, beide Einträge werden angezeigt, aber mit Zeilenumbruch. Bin deshalb davon ausgegangen, dass die Daten also auch "getrennt" in der JComboBox angezeigt werden.
 
Zuletzt bearbeitet:
Ah, mir ist soeben aufgefallen, das das sysout in der Methode getSender() 2x den soeben geposteten Beitrag liefert.
Also, scheint hier der Fehler zu liegen:
Er durchläuft zwar zweimal die Schleife, weil ja 2 Einträge in der xml-Datei vorhanden sind, aber scheinbar liefert er mir 2x den zusammengesetzten String.

KOMISCH

Liegt das nun an der Art, wie ich die xml-Datei auslese (ist für mich Neuland) oder ein meiner Methode? Kann den Fehler einfach nicht finden!
 
Ich hab deine XML-Datei mal mit JDom verarbeitet und bin zu folgendem Ergebnis gekommen:

Absender.java
Java:
package de.tutorials.tinipieps.sender;

public class Absender {
	private String	mail;

	public void setMail(String mail) {
		this.mail = mail;
	}

	public String getMail() {
		return mail;
	}
}
Empfaenger.java
Java:
package de.tutorials.tinipieps.sender;

public class Empfaenger {
	private String	mail;

	public void setMail(String mail) {
		this.mail = mail;
	}

	public String getMail() {
		return mail;
	}
}
Konfiguration.java
Java:
package de.tutorials.tinipieps.sender;

import java.util.LinkedList;
import java.util.List;

public class Konfiguration {
	private String				mailServer;
	private List<Absender>		absender;
	private List<Empfaenger>	empfaenger;
	private boolean				editierbar;

	public Konfiguration() {
		absender = new LinkedList<Absender>();
		empfaenger = new LinkedList<Empfaenger>();
	}

	public List<Absender> getAbsender() {
		return absender;
	}

	public List<Empfaenger> getEmpfaenger() {
		return empfaenger;
	}

	public void setMailServer(String mailServer) {
		this.mailServer = mailServer;
	}

	public String getMailServer() {
		return mailServer;
	}

	public void setEditierbar(boolean editierbar) {
		this.editierbar = editierbar;
	}

	public boolean isEditierbar() {
		return editierbar;
	}
}
Parser.java
Java:
package de.tutorials.tinipieps.sender;

import java.io.File;
import java.io.IOException;

import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;

public class Parser {
	private Element	root;

	public Element getRootElement() {
		return root;
	}

	public Parser(String xmlPath) throws JDOMException, IOException {
		root = new SAXBuilder().build(new File(xmlPath)).getRootElement();
	}

	public Konfiguration parseKonfiguration() {
		Konfiguration konfiguration = new Konfiguration();

		Element el = null;
		if((el = root.getChild("mailserver")) != null) {
			konfiguration.setMailServer(el.getTextTrim());
		}

		// Absender
		if((el = root.getChild("absender")) != null) {
			for(Object o : el.getChildren("mail")) {
				Element element = (Element)o;
				Absender tmp = new Absender();
				tmp.setMail(element.getTextTrim());
				konfiguration.getAbsender().add(tmp);
			}
		}

		// Empfänger
		if((el = root.getChild("empfaenger")) != null) {
			for(Object o : el.getChildren("mail")) {
				Element element = (Element)o;
				Empfaenger tmp = new Empfaenger();
				tmp.setMail(element.getTextTrim());
				konfiguration.getEmpfaenger().add(tmp);
			}
		}

		return konfiguration;
	}
}
Und zum Schluss noch die Anwendung des ganzen ...
Main.java
Java:
package de.tutorials.tinipieps.sender;

import java.io.IOException;

import org.jdom.JDOMException;

public class Main {
	public static void main(String[] args) throws JDOMException, IOException {
		Konfiguration conf = new Parser("res/sender.xml").parseKonfiguration();

		System.out.println("Mailserver:");
		System.out.println(conf.getMailServer());

		System.out.println();
		System.out.println("Absender:");
		for(Absender a : conf.getAbsender()) {
			System.out.println(a.getMail());
		}

		System.out.println();
		System.out.println("Empfänger:");
		for(Empfaenger e : conf.getEmpfaenger()) {
			System.out.println(e.getMail());
		}
	}
}

Mit einer JComboBox hab ich es noch nicht probiert, mach ich mal eben, aber ich denke das sollte so klappen ...

EDIT:
So, hab mal eine Testgui gemacht und es klappt super mit der JComboBox ...
 
Zuletzt bearbeitet:
Ich glaube, ich habe es gelöst.:)
Man muß sich sozusagen von Node zu ChildNode angeln.

Hier ein exemlarischer Quellcode:

Code:
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class MainProg
{ 
	

	    public static void main (String[] args)
	    {
	    		    	
	    	DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
			DocumentBuilder builder;
			try
			{
				
				
				builder = factory.newDocumentBuilder();
				
				
				Document document = builder.parse(new File("Pfad zu deiner config-Datei"));
								
				NodeList nlnr = document.getElementsByTagName("absender");
				
				System.out.println("Anzahl der Nodes in nlnr: " + nlnr.getLength());
				System.out.println("Die Node auf Index 0: " + nlnr.item(0));
				
				Node m = nlnr.item(0);
				System.out.println("Name von Node m: " + m.getNodeName());
				System.out.println("Hat m Kinder:" + m.hasChildNodes());
				

				NodeList nl = m.getChildNodes();

				System.out.println("------------------------------------");				
				for(int i = 0; i < nl.getLength(); i++)
				{
					System.out.println("in der Schleife");
					if(nl.item(i).getNodeName().equals("mail"))
					{
						System.out.println("Treffer");
						System.out.println(nl.item(i).getNodeName());						
						System.out.println(nl.item(i).getTextContent());
						System.out.println("XXXXXXXXXXXXXXXXXXXXXXXX");
					}
					else
					{
						System.out.println("Kein Treffer");
						System.out.println(nl.item(i).getNodeName());						
						System.out.println(nl.item(i).getTextContent());
						System.out.println("XXXXXXXXXXXXXXXXXXXXXXXX");
					}
									
					
				}
				
			}
			catch(Exception e)
			{
				e.printStackTrace();
			}
	    
	    }	
			
				
}

Diesen Code funktioniert und du dürftest das schnell in deinen Code integrieren können.

Das einzige was ich nicht verstehe ist, was die Nodeliste alles als Node zählt?

MfG
hansmueller
 
Das ist eigentlich ganz einfach, jedes Tag ist ein Node. Dein Tag <Konfigurationen> ist ein Node, das die Tags <mailserver>, <absender>, <empfaenger> und <editierbar> als childnodes hat, welche alle in einer Liste aufgzählt werden, sobald du getChildNodes für den <Konfigurationen>-Node aufrufst. Absender hat wiederum die <mail>-Tags als childnode, die aber nicht als childnode des <Konfigurationen>-Tags gezählt werden; du musst dir das Ganze als eine Art Baumstruktur vorstellen, bei der alle direkten Unterknoten eines Knotens in einer Liste aufgezählt werden.
Person1@blabla.de ist übrigens ein Node vom Typ TEXT_NODE.
 
Ich glaube, ich habe es gelöst.:)
Man muß sich sozusagen von Node zu ChildNode angeln.

MfG
hansmueller

Danke erstmal für den Tipp. Eigentlich ja logisch, weil ich vor jedem absender ja noch <mail> stehen habe.

Also, ich hab jetzt mal versucht, deinen Ansatz bei mir einzubauen:
Problem: list.item(i) liefert 5 verschiedene eiträge, wobei nur 2 relevant sind (.equals("mail")).
Da ich aber zuvor die Größe meines Arrays festlege, sind nun 3 Werte des Arrays nicht belegt.
Ich weiß nicht, ob es daran liegt, aber ich kriege jetzt ne NullPointerException in der Klasse LogIn -> Methode: fillSenderCombo() -> Stelle: Arrays.sort(adressen);

Und nun?

Code:
if (childrenNodeList.getLength() > 0){
           
            	// Feststellung, das Node "absender" Kinder hat ("mail")
            	Node element = childrenNodeList.item(0);
            	System.out.println("Node: " + element.getNodeName()+
            					" hat Kinder:" + element.hasChildNodes());
            	
            	// NodeList der Kinder
            	NodeList list = element.getChildNodes();

            	System.out.println("-----------------------------------");
            	int laenge = list.getLength();
        		System.out.println("Laenge des Arrays: "+laenge);
             	senderArray = new String[laenge];
             	System.out.println("-----------------------------------");
            	for (int i=0; i<laenge; i++){
            		if (list.item(i).getNodeName().equals("mail")){
            			System.out.println(list.item(i).getNodeName());						
						System.out.println(list.item(i).getTextContent());
						valueName = list.item(i).getTextContent();
			           	senderArray[i] = valueName; 
			           	System.out.println(
			           		"Nutzer in Liste der Absender uebernommen");
			           	System.out.println("XXXXXXXXXXXXXXXXXXXXXXXX");
            		}  else{
            			System.out.println(
            					"Fehler beim Hinzufuegen der Absender");
            			System.out.println(list.item(i).getNodeName());						
            			System.out.println(list.item(i).getTextContent());
            			System.out.println("XXXXXXXXXXXXXXXXXXXXXXXX");
            		}
            	}
		}
		}catch (IOException e){
            System.out.println("IO Fehler");
        }catch (ParserConfigurationException e){
            System.out.println("Parser Fehler");
        }catch (SAXException e){
            System.out.println("SAX Fehler");
        }
 
		return senderArray;

Ausgabe auf Konsole:
Code:
Anzahl der Nodes in 'absender': 1, wobei die Node auf Index 0: [absender: null]
Node: absender hat Kinder:true
-----------------------------------
Laenge des Arrays: 5
-----------------------------------
Fehler beim Hinzufuegen der Absender
#text

		
XXXXXXXXXXXXXXXXXXXXXXXX
mail
Person1@blabla.org
Nutzer in Liste der Absender uebernommen
XXXXXXXXXXXXXXXXXXXXXXXX
Fehler beim Hinzufuegen der Absender
#text

		
XXXXXXXXXXXXXXXXXXXXXXXX
mail
Person2@blabla.org
Nutzer in Liste der Absender uebernommen
XXXXXXXXXXXXXXXXXXXXXXXX
Fehler beim Hinzufuegen der Absender
#text

	
XXXXXXXXXXXXXXXXXXXXXXXX
Exception in thread "main" java.lang.NullPointerException
	at java.util.Arrays.mergeSort(Unknown Source)
	at java.util.Arrays.sort(Unknown Source)
	at login.LogIn.fillSenderCombo(LogIn.java:175)
	at login.LogIn.createLogIn(LogIn.java:99)
	at login.LogIn.<init>(LogIn.java:54)
	at application.Application.main(Application.java:15)
 
Ich empfehle dir, die eingelesenen Daten in einer LinkedList<String> zu speichern (findest du in java.utils, wie jede andere Collection auch), dann brauchst du nämlich keine Größenangeben zu machen. Wenn du mit dem Einlesen fertig bist, rufst du dann die toArray()-Methode auf.
Warum er 5 Nodes statt 2 einliest, weiß ich nicht, womöglich sind das irgendwelche Verwaltungs-Nodes. Wenn es dich interessiert, musst du das noch genauer untersuchen. Wäre schön, wenn du dann deine Erkenntnisse hier veröffentlichst, ich bin nämlich auch auf den Grund gespannt.
 
Ich empfehle dir, die eingelesenen Daten in einer LinkedList<String> zu speichern (findest du in java.utils, wie jede andere Collection auch), dann brauchst du nämlich keine Größenangeben zu machen. Wenn du mit dem Einlesen fertig bist, rufst du dann die toArray()-Methode auf.
Warum er 5 Nodes statt 2 einliest, weiß ich nicht, womöglich sind das irgendwelche Verwaltungs-Nodes. Wenn es dich interessiert, musst du das noch genauer untersuchen. Wäre schön, wenn du dann deine Erkenntnisse hier veröffentlichst, ich bin nämlich auch auf den Grund gespannt.

Auf eine ähnliche Idee bin ich grad selbst gekommen:
Code:
package adresses;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

import application.Application;

/**
 * Diese Klasse bietet alle Methoden, um die Konfigurationsdatei der 
 * moeglichen Absender auszulesen
 * @author Stepanski
 *
 */
public class Sender {
	
	/**
	 * Diese Methode liest Schlüssel der Datei aus 
	 * und schreibt diese dann in ein String[]
	 * @return  String[]  senderArray
	 */
	public static String[ ] getSender() {
		
		//String[] anlegen
		String [ ] senderArray = null;
		//Liste anlegen, der Werte zunaechst uebergeben werden
		List<String> senderList = new ArrayList<String>();
		NodeList childrenNodeList;
		String valueName;
		
		// Daten aus config.xml auslesen
		try{
			DocumentBuilderFactory factory = DocumentBuilderFactory.
															newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document document = builder.parse(new File(Application.path+
            												"config.xml"));
            //NodeList = Liste, in der Eintraege gesammelt werden, ohne
            //Implementierung festzulegen
            // getElementsByTagName() gibt NodeList mit allen Elementen
            // des gegebenen Tag-Namens zurück
            // -> "mail"
            childrenNodeList = document.getElementsByTagName("absender");
            System.out.println("Anzahl der Nodes in 'absender': " + 
            					childrenNodeList.getLength()+
            					", wobei die Node auf Index 0: " +
            					childrenNodeList.item(0));

            valueName = null;
 
            if (childrenNodeList.getLength() > 0){
           
            	// Feststellung, das Node "absender" Kinder hat ("mail")
            	Node element = childrenNodeList.item(0);
            	System.out.println("Node: " + element.getNodeName()+
            					" hat Kinder:" + element.hasChildNodes());
            	
            	// NodeList der Kinder erstellen
            	NodeList list = element.getChildNodes();
            	
            	System.out.println("-----------------------------------");
            	int laenge = list.getLength();
            	// for-Schleife ueber alle Elemente der NodeList list
            	for (int i=0; i<laenge; i++){
            		Node childrenElement = list.item(i);
                	System.out.println("Node: " + 
                			childrenElement.getNodeName()+" hat Kinder:" 
                			+ childrenElement.hasChildNodes());
                	System.out.println("******************************");
                	
                	// wenn Name des NodeList-Eintrages gleich "mail"
            		if (list.item(i).getNodeName().equals("mail")){
            			// Name der Node
            			System.out.println(list.item(i).getNodeName());						
						// Name des Node-Eintrages
            			System.out.println(list.item(i).getTextContent());
            			//Name String uebergeben
						valueName = list.item(i).getTextContent();
						// String an List<String> uebergeben
			           	senderList.add(valueName);
			           	System.out.println(
			           		"Nutzer in Liste der Absender uebernommen");
			           	System.out.println("XXXXXXXXXXXXXXXXXXXXXXXX");
            		}  else
            			System.out.println(
            					"Fehler beim Hinzufuegen der Absender");
            	}
		}
		}catch (IOException e){
            System.out.println("IO Fehler");
        }catch (ParserConfigurationException e){
            System.out.println("Parser Fehler");
        }catch (SAXException e){
            System.out.println("SAX Fehler");
        }
      
        // List an Array uebergeben
        senderArray = (String[])senderList.toArray(
        						new String[senderList.size()]);
		return senderArray;		
	}
}

Falls ich den Grund für die "zuvielen" Nodes finde, werde ich euch natürlich in Kenntnis setzten.
Find es ja komisch, dass alle 3 Nodes "#text" heißen und keine Kinder haben!
Sollte jemand schon die Antwort kennen: Ich bin für jeden Hinweis dankbar!
 
Zurück