Wie mit XML umgehen?

Status
Nicht offen für weitere Antworten.

maeck

Mitglied
Hallo,

ich bin noch super neu in dem Thema XML.
Für meine Studienabschlussarbeit habe ich zwei Klassen, die unabhängig voneinander sein sollen (sagen wir mal, wie Client und Server). Klasse1 bekommt nun Daten aus einer Datenbankabfrage (SPARQL) und packt diese in ein XML-Dokument (test.srx):
Code:
<?xml version='1.0' encoding='UTF-8'?>
<sparql xmlns='http://www.w3.org/2005/sparql-results#'>
	<head>
		<variable name='clip'/>
		<variable name='address'/>
	</head>
	<results>
		<result>
			<binding name='clip'>
				<uri>http://www.semanticweb.org/...test1.mpg</uri>
			</binding>
			<binding name='address'>
				<literal>C:/...test1.smil</literal>
			</binding>
		</result>
		<result>
			<binding name='clip'>
				<uri>http://www.semanticweb.org/...test2.mpg</uri>
			</binding>
			<binding name='address'>
				<literal>C:/...test2.smil</literal>
			</binding>
		</result>
	</results>
</sparql>
Nun muss ich in Klasse2 das XML-Dokument auslesen, um die URI des Clips und die Adresse zu bekommen.
Die URI (clip) soll in einer Liste anzeigt werden und beim Klicken auf den Listeneintrag, die Adresse des Clips (address) an eine andere Funktion weitergegeben werden, die dann die Datei abspielt.

Dafür dachte ich mir, das XML-Dokument auszulesen und in ein mehrdimensionales Array zu packen.
Code:
[0][0] 1.Clip-URI
[0][1] 1.Clip-Adresse
[1][0] 2.Clip-URI
[1][1] 2.Clip-Adresse
Oder kann ich auch immer direkt auf das XML-Dokument zugreifen und die Dinge direkt auslesen?

Da ich mich nicht auskenne, wäre ich sehr dankbar, wenn ihr mir etwas raten könntet.

Vorab schonmal vielen Dank,
maeck
 
S

SlaterB

Gast
XML ist für Datenübertragung gedacht, sicher nicht für Datenhaltung im Programm,
es macht schon oft Sinn, die XML-Daten einmalig auszulesen und in ein Java-Array zu schreiben

man kann noch unterscheiden zwischen einem manuell angelegten + mit manuellen Code gefüllten String[2][2]
und einer allgemeinen dynamisch/ generisch/ automatisch erstellten Datenstruktor:
Data x = createDataFromXML(file);
(String) x.getData("clip","uri",1);

wie auch immer, falls deine Frage auch beinhaltete, WIE man XML ausliest:
zu so einem großen Thema gibts ganze Bücher oder Kapitel in wichtigen allgemeinen Büchern,
die wichtigesten Schlagwörter sind SAX und DOM/ Dom4j
 

maeck

Mitglied
Hallo SlaterB, danke für deine Einschätzung!
SlaterB hat gesagt.:
XML ist für Datenübertragung gedacht, sicher nicht für Datenhaltung im Programm,
es macht schon oft Sinn, die XML-Daten einmalig auszulesen und in ein Java-Array zu schreiben
Wenn ich dich richtig verstehe, würdest du mir - in meinem konkreten Beispiel - schon dazu raten, das XML-File erst mal in ein mehrdimensionales Array zu packen, bevor ich mit den Daten arbeite (eine Liste fülle)?

SlaterB hat gesagt.:
man kann noch unterscheiden zwischen einem manuell angelegten + mit manuellen Code gefüllten String[2][2]
und einer allgemeinen dynamisch/ generisch/ automatisch erstellten Datenstruktor:
Data x = createDataFromXML(file);
(String) x.getData("clip","uri",1);
Das versteh ich nicht wirklich.

SlaterB hat gesagt.:
wie auch immer, falls deine Frage auch beinhaltete, WIE man XML ausliest:
zu so einem großen Thema gibts ganze Bücher oder Kapitel in wichtigen allgemeinen Büchern,
die wichtigesten Schlagwörter sind SAX und DOM/ Dom4j
Ja beinhaltete sie ;) aber die Schlagwörter helfen mir schon, mich weitergehend zu informieren.

Ich will nur gern wissen, ob der Ansatz richtig ist, bevor ich lang herumprobiere, denn wie gesagt, ich brauch das für meine Abschlussarbeit und hab leider nicht mehr so viel Zeit (bis ich die abgeben muss) um mich durch zu probieren.

maeck
 
S

SlaterB

Gast
maeck hat gesagt.:
Wenn ich dich richtig verstehe, würdest du mir - in meinem konkreten Beispiel - schon dazu raten, das XML-File erst mal in ein mehrdimensionales Array zu packen, bevor ich mit den Daten arbeite (eine Liste fülle)?
naja, wenn du sie in eine Liste füllen willst und danach mit der Liste arbeitest, dann erscheint es natürlich weniger sinnvoll,
sie vorher für 5 ms in einem Array abzulegen ;)

kommt alles auf die Umstände an, etwa ob es schon einen vorhandenen Import Array -> Liste gibt

Das versteh ich nicht wirklich.
muss auch nicht sein, eh bisschen zu kompliziert, wahrscheinlich weniger wichtig
 

maeck

Mitglied
SlaterB hat gesagt.:
naja, wenn du sie in eine Liste füllen willst und danach mit der Liste arbeitest, dann erscheint es natürlich weniger sinnvoll,
sie vorher für 5 ms in einem Array abzulegen ;)
Aus dem XML-File würde ich beide Werte (clip und address) in das array laden. In der Liste soll aber nur der clip erscheinen und erst wenn ich den clip auswähle, soll anschließend die adresse ausgeführt werden.

Deswegen dachte ich daran ein array zu nehmen. sonst müsste ich den angeklickten wert erst wieder in dem xml-file suchen und dann die entsprechende adresse herausfinden, oder?

was macht da mehr sinn?

maeck
 
S

SlaterB

Gast
insofern macht das Array Sinn,
externe Dateien möglichst nur einmal lesen, zusammenhängende Daten aus einer Datenbank nur einmal laden usw, recht einfache Regel
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben