ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
1691
1691
EMPFEHLEN
-
23.04.08 09:19 #1
- Registriert seit
- Apr 2008
- Beiträge
- 2
Folgendes Problem hatte ich! Ich hatte eine Tabelle, deren Daten ich zu weiteren Berechnungen brauchte und die Lösungen dann auf einer graphischen Plattform wiedergeben kann.
Hab ewig im Internet gesucht aber wenig zu diesem Thema gefunden. Hier mal mein Grundgerüst.
test.xml
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
<?xml version="1.0" encoding="ISO-8859-1"?> <!-- W3Schools bookstore example --> <bookstore> <Sparbuch.1 name="0"> <Zins1>46</Zins1> <Zins2>12</Zins2> <Zins3>25</Zins3> <Zins4>5</Zins4> </Sparbuch.1> <Sparbuch.2 name="1"> <Zins1>6</Zins1> <Zins2>2</Zins2> <Zins3>2</Zins3> <Zins4>5</Zins4> </Sparbuch.2> <Sparbuch.3 name="2"> <Zins1>6</Zins1> <Zins2>2</Zins2> <Zins3>5</Zins3> <Zins4>4</Zins4> </Sparbuch.3> <Sparbuch.4 name="3"> <Zins1>36</Zins1> <Zins2>16</Zins2> <Zins3>7</Zins3> <Zins4>9</Zins4> </Sparbuch.4> </bookstore>
Funktioniert nur in IE
test.html
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
<html><head><title>Test</title> <script type="text/javascript"> function loadXMLDoc(dname) { try //Internet Explorer { xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); } catch(e) { try //Firefox, Mozilla, Opera, etc. { xmlDoc=document.implementation.createDocument("","",null); } catch(e) {alert(e.message)} } try { xmlDoc.async=false; xmlDoc.load(dname); return(xmlDoc); } catch(e) {alert(e.message)} return(null); } xmlDoc=loadXMLDoc("test.xml"); function wertsuche(){ var x = document.formular.BNR.options[document.formular.BNR.options.selectedIndex].text; var hochzaehl = 0; xv=xmlDoc.getElementsByTagName(x)[0].attributes; var attributwert =(xv.getNamedItem("name").nodeValue); while (hochzaehl < 4){ var zinsname = (xmlDoc.getElementsByTagName(x)[0].childNodes[hochzaehl].nodeName); var d = (xmlDoc.getElementsByTagName(zinsname)[attributwert].childNodes[0].nodeValue); document.formular.zins[hochzaehl].value = d; hochzaehl++ } } </script> </head><body> <form name="formular" style="margin-left:10px"> <p style="margin-left:80px"> BnschNR: <select id="zumir" name="BNR" size="1" style="font-family:Arial; font-size:12pt; text-align:right" onchange="wertsuche()"> </select> </p> <p style="margin-left:105px"> Wert 1 <input type="text" name="zins" size="3" style="font-family:Arial; font-size:12pt; text-align:right" readonly> %</p> <p style="margin-left:105px"> Wert 2 <input type="text" name="zins" size="3" style="font-family:Arial; font-size:12pt; text-align:right" readonly> %</p> <p style="margin-left:105px"> Wert 3 <input type="text" name="zins" size="3" style="font-family:Arial; font-size:12pt; text-align:right" readonly> %</p> <p style="margin-left:105px"> Wert 4 <input type="text" name="zins" size="3" style="font-family:Arial; font-size:12pt; text-align:right" readonly> %</p> <script language="javascript" type="text/javascript"> var inpNam = "inp"; wieoft= (xmlDoc.getElementsByTagName("bookstore")[0].childNodes.length) i = 0; while (i<wieoft){ var inp = document.createElement("option"); inp.text=xmlDoc.getElementsByTagName("bookstore")[0].childNodes[i].nodeName document.getElementById("zumir").options.add(inp); i++; } wertsuche(); </script> </form> </body></html>
Für Mozilla Werte in Funktion wertsuche() und im 2 Javascript Teil ändern wie folgt
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14
function wertsuche(){ var x = document.formular.BNR.options[document.formular.BNR.options.selectedIndex].text; var hochzaehl = 1; var j = 0; xv=xmlDoc.getElementsByTagName(x)[0].attributes; var attributwert =(xv.getNamedItem("name").nodeValue); while (j < 4){ var zinsname = (xmlDoc.getElementsByTagName(x)[0].childNodes[hochzaehl].nodeName); var d = (xmlDoc.getElementsByTagName(zinsname)[attributwert].childNodes[0].nodeValue); document.formular.zins[j].value = d; hochzaehl=hochzaehl+2 j++; } }Code :1 2 3 4 5 6 7 8 9 10 11 12
<script language="javascript" type="text/javascript"> var inpNam = "inp"; wieoft= (xmlDoc.getElementsByTagName("bookstore")[0].childNodes.length) i = 1; while (i<wieoft){ var inp = document.createElement("option"); inp.text=xmlDoc.getElementsByTagName("bookstore")[0].childNodes[i].nodeName document.getElementById("zumir").options.add(inp); i=i+2; } wertsuche(); </script>
Über den Attributwert "name" wird bestimmt, welcher Zins1,Zins2,Zins3,Zins4 Wert ausgelesen wird, fand hierzu keine andere Lsg.
Vorteil: Bei Erweiterung der Xml Datei wird automatisch Dropdown-Liste erweitert.
Hoffe es gibt nicht viel auszusetzen fange gerade erst an mich dem Thema auseinanderzusetzen. Falls es eine elegantere Lsg gib, so laßt es mich bitte wissen.
Noch eine Frage: Gibt es eine Möglichkeit so eine xml in excel zu bearbeiten und abzuspeichern? Ohne das Attributwerte verloren gehen und die Struktur geändert wird!
-
Moin,
Danke für deine Lösung, in Zeiten von AJAX scheinen viele zu vergessen, dass es da noch mehr gibt, und in meinen Augen ist dein Lösungsweg weitaus eleganter als eine etwaige AJAX-Lösung
Wobei du die Sache noch nicht vollends ausnutzt...es geht da noch einiges mehr
Schau dir mal in SelfHTML das Kapitel zur Darstellung von XML-Daten an..ich glaube, das wird dich sehr interessieren, vor allem auf die Abschnitte XSLT und XPath solltest du dabei ein Auge werfen
Was Excel betrifft, das stelle ich mir recht kompliziert vor, da das ja seine eigene Dokumentstruktur hat... ich würde diesen Umweg aber garnicht erst gehen.
Die entsprechenden Berechtigungen im Browser(IE) vorrausgesetzt, könntest du die Daten im Browser ändern, und dann das daraus resultierende XML-Document direkt in einer Datei speichern.
-
Hi,
die Methode hat nur einen entscheidenden Nachteil. Das durch createDocument zurückgegebene Dokument kennt im Safari die Methode load nicht. Aus diesem Grund wird dort das XML-Dokument nicht geladen.
Vielleicht gibt es hier aber eine alternative Möglichkeit (ausser XMLHttpRequest) - würde mich auch interessieren.
Ciao
QuaeseVielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
----
Der "Fortsetzungsroman" auf www.leuteforum.de
New kind to realize large scalable projects with jQuery: jQuery SDK
-
Wenn man die XML-Datei dynamisch laden will, gibt es da wahrscheinlich keine Alternative.
Ähnliche Themen
-
selectbox mit daten aus db füllen (meine nicht dropdown menue)
Von largo666 im Forum PHPAntworten: 2Letzter Beitrag: 14.08.10, 13:00 -
SQL Daten von Selectbox an Textfelder übergeben
Von ctacont im Forum PHPAntworten: 10Letzter Beitrag: 17.12.09, 11:10 -
Daten aus Db in selectbox anzeigen
Von Deejoy im Forum Javascript & AjaxAntworten: 37Letzter Beitrag: 15.07.08, 00:02 -
Daten zu einem Datensatz in einer Selectbox ausgeben - funktioniert nicht
Von Jerinca im Forum ASPAntworten: 18Letzter Beitrag: 03.11.04, 09:34 -
Mysql Daten -> Selectbox
Von Aznet im Forum PHPAntworten: 1Letzter Beitrag: 06.06.04, 23:03





Zitieren

Login





