XML Daten sortieren - Verständnisfrage

Pagaty

Mitglied
Hallo,

ich bin (noch) kein Programmierer. Mein Interesse dafür ist aber groß. Nachdem ich endlich eine Anwendung/Projekt gefunden habe, mit dem ich beginnen möchte, habe ich vor zwei Monaten begonnen mich in die Sache mal einzuarbeiten.

Im Prinzip möchte ich eine Anwendung schreiben, die Daten aus einer Eingabemaske ausliest, in einer XML Datei speichert und in einem weiteren Fenster möchte ich diese Daten sortiert/gefiltert ausgeben.

Bisher fuktioniert das Auslesen und Spreichern sehr gut, und ich glaube diesen Teil habe ich verstanden.

Nun hänge ich seit einiger Zeit am Problem mit dem sortieren.

Ich kann das XML Dokument einlesen und auf die Knoten, Kindknoten und Attribute zugreifen.

Was so garnicht funktionieren will ist die Sortierung. Was wahrscheinlich auch damit zusammenhängt, das mir sicher große Teile an Grundlagenwissen fehlen.
Bisher habe ich ein paar Ansätze versucht, aber leider nicht verstanden.

Was für mich sehr hilfreich wäre, eine sinnvolle Vorgehensweise zu haben, anhand derer ich mich einarbeiten kann. Ich möchte eigendlich vermeiden Programmierbeispiele zu bekommen, da ich die Verfahrensweise verstehen will. Nur gibt es so viele Möglichkeiten (lt. google) das ich gerade den Wald vor lauter Bäumen nicht sehe.

Ich hoffe ich konnte mein Problem genau genug beschreiben.

noch mal zur Sicherheit:
In der Anwendung werden Rundenzeiten einer Carrerabahn gespeichert.
in der Form
Code:
<Zeitstempel ID="7">
    05.12.2012
    <Fahrer1>
      Ingo
      <Bahn1 f1_b1_runden="9" f1_b1_zeit="8.569" />
      <Bahn2 f1_b2_runden="12" f1_b2_zeit="7.985" />
      <Bahn3 f1_b3_runden="8" f1_b3_zeit="9.631" />
      <Bahn4 f1_b4_runden="15" f1_b4_zeit="7.918" />
    </Fahrer1>
  </Zeitstempel>

Ich möchte jetzt zum Beispiel ausgeben Welcher Fahrer wann die schnellste Runde auf Bahn 1 gefahren ist.

Über Denkanstöße bin ich dankbar.

MfG
Pagaty
 

AndiE

Top Contributor
Wie sieht denn die Struktiur der XMl aus. Hast du sowas wie DTD oder XSD schon erstellt? auf jeden Fall sind die Attribute bei allen Einträgen unterschiedlich. Genau wie man Äpfel nicht mit Birnen vergleichen kann, geht das hier auch nicht. Deshalb kannst du sie nicht sortieren.

Vorschlag für ein DTD ( ohne Attribute) wäre etwa so:

[XML]
<!ELEMENT fahrer (name,zeiten)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT zeiten (runde)*>
<!ELEMENT runde (nummer,zeit)>
<!ELEMENT nummer (#PCDATA)>
<!ELEMENT zeit (#PCDATA)>
[/XML]

das würde dann z.B. ergeben:

[XML]
<fahrer>
<name>klaus
</name>
<zeiten>
<runde>
<numme>1</nummer>
<zeit>1:26,9</zeit>
</runde>
<runde>
<nummer>2</nummer>
<zeit>1:39,6</zeit>
</runde>
</zeiten>
</fahrer>
[/XML]

Dann kannst du den Inhalt der Kindsknoten "fahrer.zeiten.runde.zeit" miteinander vergleichen.
 

Pagaty

Mitglied
Hallo,

danke für die schnelle Antwort.

Mit DTD hab ich mcih noch nicht befasst. Werde mich da jetzt wohl einarbeiten müssen.
Du meinst das ich mit meiner bisherigen Struktur nicht sortieren kann. Ich hab sie jetzt mal geändert.

Meist Du so könnte es gehen?

Code:
<Rennen>
	<Zeitstempel ID="1">
	05.12.2012
		<Fahrer>
			<Name>
			Paul
				<Bahn1>
					<Runden>5</Runden>
					<Zeit>12.987</Zeit>
				</Bahn1>
				
				<Bahn2>
					<Runden>6</Runden>
					<Zeit>8.098</Zeit>
				</Bahn2>

				<Bahn3>
					<Runden>9</Runden>
					<Zeit>9.876</Zeit>
				</Bahn3>

				<Bahn4>
					<Runden>4</Runden>
					<Zeit>13.098</Zeit>
				</Bahn4>
			</Name>
		</Fahrer>
	</Zeitstempel>
</Rennen>

root ist Rennen.
Den Zeitstempel hab ich als erstes gesetzt.
Ist es später möglich auf diesen zuzugreifen, wenn ich eine Rundenzeit als die beste ermittelt habe?

Es werden am Ende vier Fahrer sein, die auf jeder Bahn einmal gefahren sind.
Meinst Du ich sollte im XML File vier einzelne Fahrerknoten einrichten, oder könnte es auch so gehen?

Ich habe mal versucht einen Grobentwurf des DTD zu machen.
Könnte das so hinkommen? (hab leider erst am Wochenende Zeit mich in DTD einzulesen)
Code:
<!ELEMENT Rennen (Zeitstempel)>
<!ELEMENT Zeitstempel (Fahrer)>
<!ELEMENT Fahrer (Bahn1, Bahnn2, Bahn3, Bahn4)>
<!ELEMENT Bahn1 (Runden, Zeit)>
<!ELEMENT Runden (#PCDATA)>
<!ELEMENT Zeit (#PCDATA)>

Wenn die XML Struktur dann irgendwann mal stimmt, in welche Richtung soll ich mich dann wg. des Sortierens orientieren?
Xpath?
Alles in ein Array schreiben und dann sortieren?

Danke im Voraus

Pagaty
 

AndiE

Top Contributor
Mal was anderes- Du läßt die XML erst einmal draußen, und überlegtst, wie das System aufgebaut ist.

Es gibt ein Rennen, an dem vier Fahrer teilnehmen. Jeder Fahrer muß auf jeder der vier Bahnen Runden fahren, und die Zeit wird abgespeichert. Es werden also 16 Läufe gefahren.

Gemeinsamer Nenner aller Läufe ist, dass sie zumindest Rundenanzahl und Zeit speichern. Zuätzlich könnten sie noch Fahrer und Bahn abspeichern.

Wenn du das in ein Klasse legst kannst du ein Array mit 18 Einträgen der Läufe erzeugen, und in diesem Rundenzeiten berechnen, sortieren usw.

Du kannst auch ziemlich leicht die Klasse Lauf in XML umsetzen.

ich halte das für ein sinnvolles vorgehen.
 

Pagaty

Mitglied
Hallo,
das hört sich richtig sinnvoll an. Danke.
Konnte leider am Wochenende garnichts machen, da wir voll im Weihnachtsgeschäft stecken.

Nur damit ich es richtig verstanden habe.

Ich fülle alles in ein Zweidimensonales Array (pro lauf eine Zeile, in der alle Werte sind).
Dann kann ich innerhalb des Arrays sortieren und meine Abfragen machen. Schreiben muss ich ja nicht, da ich die Daten nur zum auswerten brauche.

Sieht bis jetzt nach einer (für mich) überschaubaren Lösung aus.

Vielen Dank. Das könnte die Richtung sein, die ich suchte.

MfG
Pagaty
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B XML-Daten mit SAX Parser verarbeiten in Java XML & JSON 4
A GUI um auf XSD Basis (valide) XML Daten zu erzeugen XML & JSON 3
K XML Datei erstellen und Daten daraus in Java auslesen XML & JSON 6
K Login Daten mit JSoup übermitteln XML & JSON 0
M JAXB @XMLID und @XMLIDREF, wie Daten hinzufügen XML & JSON 2
G Jsoup Daten lesen XML & JSON 0
F Parsen von Daten aus einer Homepage XML & JSON 6
MiMa Verfahrensweise Daten aus dem Internet abfragen XML & JSON 44
G XML-Daten im Programm verwenden XML & JSON 5
M [XSD-Definition] Eindeutige Daten in NodeList (Bereich) XML & JSON 3
K Visualisierung von Daten XML & JSON 13
T Daten in Xml speichern XML & JSON 4
T Daten aus Programm in XML Datei speichern XML & JSON 2
X Am Server ankommende XML Daten verarbeiten XML & JSON 11
L XML Daten auslesen und in Tabelle (Array) speichern XML & JSON 1
Mike90 Daten aus DB in ExcelTabelle lesen + bearbeiten + formatieren XML & JSON 2
S Mit welcher Technologie Daten abspeichern? XML & JSON 6
J Daten werden in ArrayList geschrieben, AL nicht in .xml ? XML & JSON 5
O XML-Daten fehlen in der Darstellung XML & JSON 2
I Mit JDOM Daten aus XML in ein Array abfüllen XML & JSON 4
R Daten aus xml lesen und in Strings speichern XML & JSON 4
G XML als "Datenbank" für kleine Daten XML & JSON 2
T [JDOM] XML File, neue Daten hinzufügen XML & JSON 5
E xml Element sortieren XML & JSON 2
F Elemente sortieren lassen XML & JSON 2
C root.getChildren() - Liste sortieren - ClassCastException XML & JSON 2
G Sortieren XML & JSON 3
V Datenverlust nach sortieren (nur beim serialisieren) XML & JSON 4

Ähnliche Java Themen


Oben