XML Daten richtig zuordnen

Alt 11.03.2011, 14:29   # 1
BW-Catcher
 
Registriert seit: 11.03.2010
Beiträge: 2
Hallo Leute,
ich bin neu hier und habe da mal einige Fragen zum Thema XML.

Normalerweise Programiere ich nur im C++ und VB Bereich, doch diesmal muss ich mich mit XML ein wenig auseinander setzen.

Mein Problem ist, dass ich eine Seite für einen Auto Chip tuner machen möchte, wo der User bestimmte Daten abrufen kann.

Dafür habe ich zum einen die HTML Datei mit dem Code für die Seite, sowie mehrere XML Dateien. Die eine Datei heißt hersteller.xml und die zweite heißt dann wie der entsprechende Hersteller heißt. In der Hersteller Datei stehen alle Fahrzeughersteller mit einem Verweis auf die Datendatei mit den Modellen von dem Hersteller.
Wenn der User jetzt zB. den Hersteller Audi in der Hersteller Liste wählt, dann wird die Datei Audi.xml ausgelesen und die Modelle in die Liste Modelle geschrieben. Das Problem was ich nun aber habe, das alle Motoren in der Motoren Liste eingetragen werden, egal zu welchen Model sie gehören. Sprich es werden alle Motoren von dem Hersteller angezeigt und nicht nur die von dem Model.

Hier habe ich mal für euch den Code von der html datei:

Code:
<html>
 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Fahrzeugmarke</title>
 
 
<script language='JavaScript'><!--
 
var ersterArray = new Array();
var zweiterArray = new Array();
var vierterArray = new Array();
var strDataFile;
var Selected;
var Selected2;
var Selected3;
 
function neu() {
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.open("GET","http://www.m-mtuning.de/Joomla/xml/hersteller.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
 
var marke = xmlDoc.getElementsByTagName("name");
var links = xmlDoc.getElementsByTagName("datei");
 
for ( var i = 0; i < 44; ++i )
{
    ersterArray[i] = marke[i].childNodes[0].nodeValue.toString();
    zweiterArray[i] = links[i].childNodes[0].nodeValue.toString();
}
}
 
function SelectHash() {
	var Selected = document.testform.Hashref1.options;
	var Num = 0;
	while (Num < 44) {
		var NewArray = new Array(44);
		NewArray[Num] = (ersterArray[Num]);
                document.testform.Hashref1.options[Num] = new Option(NewArray[Num],NewArray[Num]);
		Num++;
	}
}
 
function SelectHash2() {
Selected2 = document.testform.Hashref1.options[document.testform.Hashref1.options.selectedIndex].value;
 
 
var dummy;
var strSource = ".xml";
var strData = "";
 
dummy = (Selected2.replace(" ",""));
strData = (dummy.toLowerCase());
strDataFile = strData + strSource;
alert(strDataFile);
neu2();
}
 
function neu2() {
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
 
var pfad = "http://www.m-mtuning.de/Joomla/xml/" + strDataFile;
 
xmlhttp.open("GET",pfad,false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
 
var dritterArray = new Array();
var modell = xmlDoc.getElementsByTagName("modell");
var motor = xmlDoc.getElementsByTagName("motor");
var daten = xmlDoc.getElementsByTagName("daten");
 
for (var i = 0; i < modell.length; i++)
{
     dritterArray[i] = modell[i].childNodes[0].nodeValue.toString();
//	 vierterArray[i] = motor[i].childNodes[0].nodeValue.toString(); //
     document.testform.Hashref2.options[i] = new Option(dritterArray[i]);
}
     document.testform.Hashref2.length = dritterArray.length;
	 alert(dritterArray[0]);
}
function SelectHash3(){
 
Selected3 = document.getElementById("Hashref2").options[document.getElementById("Hashref2").selectedIndex].index;
 
alert(Selected3);
 
}
//-->
</script>
</head>
<form action="" name="Formular">
	<input onclick="neu();SelectHash()" type="button" value="  Chiptuning Abfrage  " />&nbsp;</form>
<form action="somecgi" method="post" name="testform">
	<br />
	<br />
	<table width="500">
		<tbody>
			<tr>
				<td width="25%">
					Fahrzeugmarke:<br />
					<select name="Hashref1" onchange="SelectHash2()" style="width: 150px"></select></td>
				<td width="25%">
					Fahrzeugmodell:<br />
					<select name="Hashref2" id="Hashref2" onchange="SelectHash3()" style="width: 150px"></select></td>
				<td width="25%">
					Motorvariante:<br />
					<select name="Hashref3" onchange="SelectHash3()" style="width: 150px"></select></td>
			</tr>
		</tbody>
	</table>
</form>
</body>
 
</html>

Die Hersteller Datei sieht wie folgt aus:

Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<marke_name>
  <marke>
    <name>Alfa Romeo</name>
	<datei>alfaromeo.xml</datei>
  </marke>
  <marke>
    <name>Audi</name>
	<datei>audi.xml</datei>
  </marke>
  <marke>
    <name>BMW</name>
	<datei>bmw.xml</datei>
  </marke>
</marke_name>
die entsprechende Audi XML findet Ihr unter dem Pfad: http://m-mtuning.de/Joomla/xml/audi.xml

Um den Fehler auch Bildlich zu sehen, könnt Ihr auch unter Chiptuning Eingabe schauen.

Wenn ich wie gesagt AUDI auswähle und dann AUDI 80, dann zeigt er mir auch die Motoren an, welche es eigentlich nicht für dieses Model gibt.
  Mit Zitat antworten
Alt 11.03.2011, 14:54   # 2
Arthur Spooner
Halb Mensch, halb Admin
 
Benutzerbild von Arthur Spooner
 
Registriert seit: 10.05.2006
Beiträge: 3.899
Hallo BW-Catcher,

was spricht gegen den Einsatz einer Datenbank? Ist wesentlich einfacher die Daten zu verknüpfen und zu verarbeiten, als ein XML mittels JavaScript aufzubereiten.

Viele Grüße
  Mit Zitat antworten

Alt 28.05.2012, 21:08 # --
News Flash
 
Benutzerbild von News Flash
 
 
 
   
Antwort
Themen-Optionen



Alle Zeitangaben in WEZ +2. Es ist jetzt 21:08 Uhr.