Datei auslesen

Dieses Thema im Forum "Mac OS X Apps" wurde erstellt von mitti, 13.11.2006.

  1. mitti

    mitti Thread Starter MacUser Mitglied

    Beiträge:
    27
    Zustimmungen:
    0
    MacUser seit:
    15.11.2004
    Gut ich hatte schon ein Problem mit httpRequest, die sehr gut hier beantwortet wurde. Danke nochmal.

    Ich hoffe, diesmal kann auch jemand mir helfen :o

    Jetzt bekomme ich meine responseXML zurück. Ich stelle erstmals als responseText. Di Frage ist:

    wie kann ich eninge Daten von Datei auslesen und in einer Tabelle oder Div auflisten.

    Beispiel.

    <text>
    <modell>AUDI</modell>
    <jahr>1989</jahr>
    <braucheIchNicht>vvvvvv</braucheIchNicht>
    </text>
    <text>
    <modell>OPEL</modell>
    <jahr>2001</jahr>
    <braucheIchNicht>vvvvvv</braucheIchNicht>
    </text>
    <text>
    <modell>FORD</modell>
    <jahr>1990</jahr>
    <braucheIchNicht>vvvvv</braucheIchNicht>
    </text>


    Wie konnte ich die Daten die ich brauche auslesen und als tabelle darstellen?

    AUDI 1989
    OPEL 2001
    FORD 1990


    Gut, das habe ich schon herausgefunden:

    var i, n_elems, elems = req.responseXML.getElementsByTagName("modell");
    n_elems = elems.length;
    for (i = 0; i < n_elems; i++)
    document.write(elems.firstChild.nodeValue + "<br>");

    Aber wie stelle ich das wie ich möchte? Und zum Beispiel ein Link darauf machen?

    Vielen Dank für Eure Hilfe
     
    Zuletzt bearbeitet: 13.11.2006
  2. helge42

    helge42 MacUser Mitglied

    Beiträge:
    239
    Zustimmungen:
    17
    MacUser seit:
    12.10.2005


    Einfach die entsprechenden Tags mit ausgeben, für eine Tabelle also z.B.
    Code:
    var elems = req.responseXML.getElementsByTagName("modell");
    var n_ elems = elems.length;
    document.write("<table>");
    for (var i = 0; i < n_ elems; i++)
    {
      document.write("<tr>");
          document.write("<td>" + elems[i].firstChild.nodeValue + "</td>");
      document.write("</tr>");
    }
    document.write("</table>");
    
     
  3. mitti

    mitti Thread Starter MacUser Mitglied

    Beiträge:
    27
    Zustimmungen:
    0
    MacUser seit:
    15.11.2004
    Danke für die Antwort. Das ist schon mal gut, Deine Erklärung, aber wie sage ich, diese Daten sollen in ein Div-Tag und nicht das ganze Dokument ersetzen?
    Ich habe nähmlich eine Seite mit Divs und in einem möchte ich gerne diese response darstellen.

    Ich hoffe, Du kannst mir weiterhelfen

    Danke
     
  4. helge42

    helge42 MacUser Mitglied

    Beiträge:
    239
    Zustimmungen:
    17
    MacUser seit:
    12.10.2005
    Jau, das hat nbei mir auch eine Weile gedauert ...

    Du hast in deinem HTML ein (leeres) div mit id, also z.B.
    Code:
    <div id="hier"></div>
    .
    Dann kannst du den Inhalt des divs als String zusammenbasteln und als innerHTML des divs setzen, z.B.
    Code:
    var elems = req.responseXML.getElementsByTagName("modell");
    var n_ elems = elems.length;
    var hier = "<table>";
    for (var i = 0; i < n_ elems; i++)
    {
      hier =+ "<tr>";
      hier =+ "<td>" + elems[i].firstChild.nodeValue + "</td>";
      hier =+ "</tr>";
    }
    hier =+ "</table>";
    document.getElementById('hier').innerHTML = hier;
    
    Und schon hast du was du brauchst.

    Helge
     
  5. mitti

    mitti Thread Starter MacUser Mitglied

    Beiträge:
    27
    Zustimmungen:
    0
    MacUser seit:
    15.11.2004
    Kein Problem, es ist nicht schlimm, wenn es lange dauert. Und noch weniger, wenn man gute Hilfe bekommt. Ich werde es gleich probieren aber ich glaube, dass wie Du das beschrieben hast, muss auf jedem Fall gehen.

    Danke für Deine Zeit und Hilfe. Ich melde mich wieder hoffentlich mit guten Nachrinten :D

    Bis dann
     
  6. mitti

    mitti Thread Starter MacUser Mitglied

    Beiträge:
    27
    Zustimmungen:
    0
    MacUser seit:
    15.11.2004
    uhmmmm :(

    ich bekomme NaN


    ok, mein Fehler, schon erledigt
     
    Zuletzt bearbeitet: 14.11.2006
  7. helge42

    helge42 MacUser Mitglied

    Beiträge:
    239
    Zustimmungen:
    17
    MacUser seit:
    12.10.2005
    Damit meinte ich, dass ich auch eine Weile gesucht habe. Zuerst habe ich immer innerText verwendet, aber da wird kein HTML interpretiert :(
    Aber wozu gibt es das wunderbare SelfHTML!

    Ciao
    Helge
     
  8. Incoming1983

    Incoming1983 MacUser Mitglied

    Beiträge:
    7.597
    Zustimmungen:
    1
    MacUser seit:
    23.07.2005
    Wie wärs mit XSLT Stylesheets?
     
  9. mitti

    mitti Thread Starter MacUser Mitglied

    Beiträge:
    27
    Zustimmungen:
    0
    MacUser seit:
    15.11.2004
    Hallo,

    also wie gesagt, es funktioniert sehr gut. Ich habe abe noch eine kleine Frage, falls ich sie stellen darf.
    :o
    Da werden mehrere td erzeugt, je machdem wieviele einträge es gibt. Wie konnte ich für jede td eine andere id erstellen? oder besser erklärt. Ich habe von jedem td einen link gemacht und auch als input die Jahreswerte von xmlresponde abgeholt. Wenn ich auf das Automodell klicke sollte das Jahr mit einem alert erscheinen.

    Kannst Du vielleicht irgendwie helfen?

    danke
     
  10. helge42

    helge42 MacUser Mitglied

    Beiträge:
    239
    Zustimmungen:
    17
    MacUser seit:
    12.10.2005
    Einfach z.B. mit dem Zähler (dem i) einen entsprechenden String basteln:
    Code:
    hier =+ "<td id='modell_" + i + "'>";
    Man beachte die einfachen und doppelten Anführungszeichen!

    Das Jahr würde ich gleich mit in die Tabelle schreiben ...
    Aber den Alert kannst du natürlich auch erzeugen, falls die Indices von Modell und Jahr gleich sind: Einfach eine Alert-Funktion schreiben, die als Input den Index erhält und entsprechend den Eintrag für das Jahr nehmen:
    Code:
    req.responseXML.getElementsByTagName("jahr")[i].firstChild.nodeValue
    , wobei das i natürlich der Index des Modells ist.

    Du kannst auch das Jahr als title-Tag setzen, dann erscheint es, wenn du mit der Maus drüber gehst.

    Generell wäre es am einfachsten, wenn du erstmal die Tabelle etc. mit ein paar Beipsieldaten von Hand erzeugst und solange umbaust, bis sie so aussieht und reagiert, wie du möchtest. Anschließend machst du dich dann an die automatische Erzeugung. Ist meist einfacher, als alles auf einmal zu machen.

    Ciao
    Helge
     
Die Seite wird geladen...

Diese Seite empfehlen