tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
1691
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    helpmeaimnew helpmeaimnew ist offline Grünschnabel
    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!
     

  2. #2
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    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.
     

  3. #3
    Quaese Quaese ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Beiträge
    3.451
    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
    Quaese
     
    Vielleicht 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

  4. #4
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Wenn man die XML-Datei dynamisch laden will, gibt es da wahrscheinlich keine Alternative.
     

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 14.08.10, 13:00
  2. Antworten: 10
    Letzter Beitrag: 17.12.09, 11:10
  3. Daten aus Db in selectbox anzeigen
    Von Deejoy im Forum Javascript & Ajax
    Antworten: 37
    Letzter Beitrag: 15.07.08, 00:02
  4. Antworten: 18
    Letzter Beitrag: 03.11.04, 09:34
  5. Mysql Daten -> Selectbox
    Von Aznet im Forum PHP
    Antworten: 1
    Letzter Beitrag: 06.06.04, 23:03