• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

xml-datei durchsuchen

testy

New member
Hallo!
Ich brauche etwas Hilfe zu meinem xml-such-problem.
Also ich habe eine xml-Datei z.b. mit folgender Struktur:

<?xml version="1.0" encoding="ISO-8859-1"?>
<Adresse>
<Datensatz>
<Name>
<Nachname>Schwarz</Nachname>
<Vorname>Sabine</Vorname>
</Name>
<Strasse>Blauweg 4</Strasse>
<PLZ>53000</PLZ>
<Ort>Bonn</Ort>
<Telefon>0228-99999999</Telefon>
</Datensatz>
<Datensatz>
<Name>
<Nachname>Blau</Nachname>
<Vorname>Sabine</Vorname>
</Name>
<Strasse>Rotweg 4</Strasse>
<PLZ>53000</PLZ>
<Ort>Bonn</Ort>
<Telefon>0228-88888888</Telefon>
</Datensatz>
</Adresse>

Nun moechte ich per DOM (oder wenns was besseres gibt lass ich mich auch verbessern) nach einem speziellen Elementwert suchen (hier z.b. 'Blau' als Nachname).
In meiner xml-Datei wird es zu dem Suchbegriff mehrere 'Fundstellen' geben.
Wenn was passendes gefunden wurde, brauch ich das komplette Element (hier 'Datensatz') mit seinem Inhalt.
Wie kann ich die gefundenen Elemente am besten ablegen/zwischenspeichern, damit ich die Inhalte dann spaeter verwenden kann (in einer jsp).

Ich hoffe, das ist halbwegs verstaendlich.
Ueber ein paar helfende Zeilen Code wuerde ich mich sehr freuen.
 
das funzt aber nur im IE ...
anderweitig haben andere sicher mehr zeit.

Code:
<html>
<head>
<script language="javascript">
XMLSuche = function(serachForm,xmlData) {

	var allFields = new Array("id","nachname","vorname","nachname","strasse","ort","telefon");

	var field = serachForm.feld.options[serachForm.feld.selectedIndex].value;
	var suchstring = new String(serachForm.searchstring.value);

	var obj = document.getElementById(xmlData);

	obj.recordset.moveFirst();


	while(!obj.recordset.EOF) {

		if(String(obj.recordset(field).value).toLowerCase() == suchstring.toLowerCase()) {

			var searchRes = new String("");

			for(var x in allFields) {

				searchRes += allFields[x]+" - " + obj.recordset(allFields[x]).value + "\n";
			}

			serachForm.results.value += searchRes + "\n-----------------------------\n";
		}

		obj.recordset.moveNext();
	}

};
</script>

<style>
div {display:inline;vertical-align:top;font:normal 12px arial}
input,select,textarea {font:normal 11px arial}
</style>
</head>
<body>

<form name="xmlsearch" onsubmit="return false">
<div>
	<div style="width:100px;height:30px;">Feld</div>

	<div style="height:30px;">
	<select name="feld">
	<option value="id">ID</option>
	<option value="nachname">Nachname</option>
	<option value="vorname">Vorname</option>
	<option value="strasse">Straße</option>
	<option value="plz">PLZ</option>
	<option value="ort">Ort</option>
	<option value="telefon">Telefon</option>
	</select>
	</div>
<br>
	<div style="width:100px;height:30px;">Suchwort</div>
	<div style="height:30px;"><input type="text" value="" size="20" name="searchstring" style="width:200px" /></div>
<br>
<div><input type="button" value="Suchen" onclick="XMLSuche(document.xmlsearch,'adresslist')" /></div>
<br><br>
<div style="width:100px;height:30px;">Suchausgabe</div>
<div><textarea cols="20" rows="6" name="results" readonly="true" style="width:200px;height:130px;border:0px;overflow:auto"></textarea></div>
</form>

<xml id="adresslist" src="meineXMLdatei.xml"></xml>

</body>
</html>


daten in der datei meineXMLdatei.xml

Code:
<?xml version="1.0" encoding="utf-8" ?>
<adresse>
	<datensatz>
		<id>1</id>
		<nachname>Schwarz</nachname>
		<vorname>Sabine</vorname>
		<strasse>Blauweg 4</strasse>
		<plz>53000</plz>
		<ort>Bonn</ort>
		<telefon>0228-99999999</telefon>
	</datensatz>
	<datensatz>
		<id>2</id>
		<nachname>Blau</nachname>
		<vorname>Sabine</vorname>
		<strasse>Rotweg 4</strasse>
		<plz>53000</plz>
		<ort>Bonn</ort>
		<telefon>0228-88888888</telefon>
	</datensatz>
</adresse>

grüße robert
 
Zurück
Oben