Hallo liebe Community.
Vorab möchte ich erwähnen, dass ich von VB auf Java umgestiegen bin.
Nun zu meinem Problem:
Ich lesen eine XML-Datei aus, die wie folgt aufgebaut ist:
[XML]
<Haus>
<Stockwerk>
<Raum>
<Sitzplatz>E23</Sitzplatz>
<Sitzplatz>E24</Sitzplatz>
<Sitzplatz>E25</Sitzplatz>
</Raum>
<Raum>
<Sitzplatz>E22</Sitzplatz>
<Sitzplatz>E21</Sitzplatz>
</Raum>
</Stockwerk>
<Stockwerk>
<Raum>
<Sitzplatz>A10</Sitzplatz>
<Sitzplatz>A11</Sitzplatz>
</Raum>
<Raum>
<Sitzplatz>A13</Sitzplatz>
</Raum>
</Stockwerk>
</Haus>
[/XML]
Wozu diese XML dient denke ich ist klar.
Einlesen mit Java funktioniert auch wunderbar...
Jetzt möchte ich aber eben diese Daten nicht nur ausgeben sondern auch speichern. In VB ging das schön mit einer eigenen Struktur. In Java gibt es so was ja nicht.
ABER hier gibt es zum einen Arraylisten und zum anderen Klassen, Objekte, Attribute und vererbung...
Ich habe versucht Arraylisten zu verschachtel. Das sah folgendermaßen aus:
Problem: Es wurde immer in jede Arraylist geschrieben. Bedeutet, ausgehend von der oben stehenden XML, die "Struktur" war folgendermaßen aufgebaut:
Sie müsste aber wie folgt aussehen:
Wer kann mir helfen? Was mache ich falsch?! ^^
Ich bin auch gerne für andere Lösungsideen oder -ansätze dankbar.
Wie ich das mit Klassen lösen soll weiß ich leider auch nicht...
Ich bedanke mich schonmal im Voraus und wenns auch nur dafür ist, dass sich jemand die Zeit genommen hat um das zu lesen und den Versuch zu starten mir zu helfen.
LG Alphagen
Vorab möchte ich erwähnen, dass ich von VB auf Java umgestiegen bin.
Nun zu meinem Problem:
Ich lesen eine XML-Datei aus, die wie folgt aufgebaut ist:
[XML]
<Haus>
<Stockwerk>
<Raum>
<Sitzplatz>E23</Sitzplatz>
<Sitzplatz>E24</Sitzplatz>
<Sitzplatz>E25</Sitzplatz>
</Raum>
<Raum>
<Sitzplatz>E22</Sitzplatz>
<Sitzplatz>E21</Sitzplatz>
</Raum>
</Stockwerk>
<Stockwerk>
<Raum>
<Sitzplatz>A10</Sitzplatz>
<Sitzplatz>A11</Sitzplatz>
</Raum>
<Raum>
<Sitzplatz>A13</Sitzplatz>
</Raum>
</Stockwerk>
</Haus>
[/XML]
Wozu diese XML dient denke ich ist klar.
Einlesen mit Java funktioniert auch wunderbar...
Jetzt möchte ich aber eben diese Daten nicht nur ausgeben sondern auch speichern. In VB ging das schön mit einer eigenen Struktur. In Java gibt es so was ja nicht.
ABER hier gibt es zum einen Arraylisten und zum anderen Klassen, Objekte, Attribute und vererbung...
Ich habe versucht Arraylisten zu verschachtel. Das sah folgendermaßen aus:
Java:
public class CLSreadHaus {
private ArrayList<String> Sitz = new ArrayList<String>();
private ArrayList<ArrayList> Raum = new ArrayList<ArrayList>();
private ArrayList<ArrayList> Stock = new ArrayList<ArrayList>();
private ArrayList<ArrayList> Haus = new ArrayList<ArrayList>();
public void lesehaus_XML (String Ausgabedatei) throws ParserConfigurationException, SAXException, IOException {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new File(Ausgabedatei));
NodeList ndlist = document.getChildNodes();
for (int j = 0;j<ndlist.getLength();j++) {
rekursive_XML(ndlist.item(j));
}
}
private void rekursive_XML (Node nd) {
if (nd.getNodeName().equals("Stockwerk")) {
Haus.add (Stock);
}
if (nd.getNodeName().equals("Raum")) {
Stock.add (Raum);
}
if (nd.hasChildNodes()){
NodeList ndl = nd.getChildNodes();
for (int p = 0;p<ndl.getLength();p++){
rekursive_XML(ndl.item(p));
String str = ndl.item(p).getNodeValue();
if (str!=null && str.trim().length()>0 && !"\n".equals(str.trim()) && !"#text".equals(str.trim())) {
Raum.add(Sitz);
Sitz.add(ndl.item(p).getParentNode().getNodeName());
Sitz.add(ndl.item(p).getNodeValue());
}
}
}
}
}
Problem: Es wurde immer in jede Arraylist geschrieben. Bedeutet, ausgehend von der oben stehenden XML, die "Struktur" war folgendermaßen aufgebaut:
Code:
Haus
+ Stock
+ Raum
+ Sitzplatz (8)
+ Raum
+ Sitzplatz (8)
+ Raum
+ Sitzplatz (8)
+ Raum
+ Sitzplatz (8)
+ Stock
+ Raum
+ Sitzplatz (8)
+ Raum
+ Sitzplatz (8)
+ Raum
+ Sitzplatz (8)
+ Raum
+ Sitzplatz (8)
Sie müsste aber wie folgt aussehen:
Code:
Haus
+ Stock
+ Raum
+ Sitzplatz (3)
+ Raum
+ Sitzplatz (2)
+ Stock
+ Raum
+ Sitzplatz (2)
+ Raum
+ Sitzplatz (1)
Wer kann mir helfen? Was mache ich falsch?! ^^
Ich bin auch gerne für andere Lösungsideen oder -ansätze dankbar.
Wie ich das mit Klassen lösen soll weiß ich leider auch nicht...
Ich bedanke mich schonmal im Voraus und wenns auch nur dafür ist, dass sich jemand die Zeit genommen hat um das zu lesen und den Versuch zu starten mir zu helfen.
LG Alphagen