# XML-Mit Java einlesen und die Daten in String...



## okoce (20. Juni 2006)

hi,

ich habe ein Problem. Ich lese ein XML-Datei mit Java ein.

import java.io.*;
import java.util.*;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;
//import javax.swing.*;

public class LoadAndParse //extends JFrame implements TableData
{

  public static void main(String args[])
  {

   try
   {

    LoadAndParse landp = new LoadAndParse();
    Document d = landp.parseUsingSAX();
    landp.printElements(d);
    }
     catch(Exception e)
    {
     e.printStackTrace();
    }
  }
     public Document parseUsingSAX() throws    DocumentException, Exception
     {
 SAXReader reader = new SAXReader();
 Document document = reader.read(new File("ueb4.xml"));
 return document;
     }

     public void printElements(Document document) throws DocumentException
     {
 Element root = document.getRootElement();

  // iterieren durch die kindelemente
 for ( Iterator i = root.elementIterator(); i.hasNext(); )
 {
      Element element = (Element) i.next();      

  System.out.println("Element Name:"+element.getQualifiedName() );
  System.out.println("Element Value:"+element.getText());
  }
     }
}

Die Daten die ich hier mit meinem Java Programm einlese möchte ich in einem Array deklarieren aber bekomme es leider nicht hin. Ich möchte es mit JTable ausgeben. JTable nimmt so weit ich informiert bin zweidimensionalen Arrays [][].

Kann mir vielleicht da weiterhelfen?

viele grüße
Esra


----------



## MasterEvil (22. Juni 2006)

Für ein normales Array muss man dummerweise im Voraus die Größe wissen.
Du könntest die Elemente zuerst in eine Liste packen und dann dort ein Array draus erzeugen. Ob es der eleganteste Weg ist weiß ich nicht aber es dürfte zumindest funktionieren.


Habs jetzt ausm Kopf geschrieben, weiß nicht ob es 100% läuft aber sollte eigentlich:


```
public String[][] getChildArray(Document document) {
		
		List<String[]> ChildList = new ArrayList<String[]>();
		Iterator it = document.getRootElement().elementIterator();
		int i = 0;
		
		// iterieren durch die kindelemente des Dokuments
		while(it.hasNext()) {
			String[] ChildObj = new String[2];
			Element element = (Element) it.next();
			
			ChildObj[0] = element.getQualifiedName();
			ChildObj[1] = element.getText();
			
			ChildList.add(ChildObj);
		}
		
		// Wenn man die Daten jetzt noch in ein Array haben
		// will muss man halt nochmal über die Liste iterieren
		String[][] ChildArray = new String[ChildList.size()][2];
		for(String[] tmpObj: ChildList) {
			ChildArray[i][0] = tmpObj[0];
			ChildArray[i][1] = tmpObj[1];
		}
		
		return ChildArray;
	}
```


----------

