Tobias H.: XML Problem

Hallo,
ich habe eine html-datei in der folgendes steht:
<?xml version="1.0"?>
<feeds>
  <feed id="4" link="http://www.bla.de/rss.php?channel=test" name="bla.de"></feed>
</feeds>

nun will ich diese datei mit folgendem js-skripts auslesen:
anmerkung: die datei wurde über ajax bereits erfolgreich geöffnet und der handler heißt req.

function parse() {
  var elfl = document.getElementById( 'elFeedList' );
  elfl.innerHTML = '';

var nl = req.responseXML.getElementsByTagName( 'feed' );
  var firstId = null;
  for( var i = 0; i < nl.length; i++ ) {
    var nli = nl.item( i );
    var id = nli.getAttribute( 'id' );
    var link = nli.getAttribute( 'link' );
    var name = nli.getAttribute( 'name' );

var elOption = document.createElement( 'option' );
    elOption.value = id;
    elOption.innerHTML = name;
    elfl.appendChild( elOption );
    if ( firstId == null ) firstId = id;
  }
  loadFeed( firstId );
}

wenn ich zur Probe alert(req.responseText) mache, um zu prüfen, ob der html code eingelesen wird, gibt er den inhalt der html-seite 1a aus. allerdings funktioniert was nicht mit der Abfrage:
var nl = req.responseXML.getElementsByTagName( 'feed' );

n1.length bleibt 0, obwohl das tag <feed>...</feed> gesetzt ist, woran kann das liegen?

lg
tobi

  1. Hallo,

    n1.length bleibt 0, obwohl das tag <feed>...</feed> gesetzt ist, woran kann das liegen?

    Ist nl.length wirklich 0, nl also ein leerer Array oder bricht das Script schon beim Aufruf von getElementsByTagName ab?

    Hast du dir mal responseXML ausgeben lassen? Was liefert z.B. responseXML.documentElement? (Das müsste das feeds-Element liefern.)

    Wann wird parse() ausgeführt?

    Kontrollausgaben sind mit Firebug und console.log() recht einfach, weil man da in der Konsole sofort das Objekt samt Eigenschaften begutachten kann.

    Mathias

    1. Hallo,

      n1.length bleibt 0, obwohl das tag <feed>...</feed> gesetzt ist, woran kann das liegen?

      Ist nl.length wirklich 0, nl also ein leerer Array oder bricht das Script schon beim Aufruf von getElementsByTagName ab?

      Hast du dir mal responseXML ausgeben lassen? Was liefert z.B. responseXML.documentElement? (Das müsste das feeds-Element liefern.)

      Wann wird parse() ausgeführt?

      Kontrollausgaben sind mit Firebug und console.log() recht einfach, weil man da in der Konsole sofort das Objekt samt Eigenschaften begutachten kann.

      Mathias

      hey,
      also es wird nicht bei getElementsByTagName abgebrochen. Wenn ich responseXML.documentElement ausgeben lasse kommt als ergebnis null. zur kontrolle habe ich mir mal req.responseText() ausgeben lassen, hier habe ich das komplette html-skript wunderbar ausgeben lassen können (d.h., dass die datei erfolgreich eingelesen wurde). nur ich kann irgendwie nicht auf die elemente mit getElementsByTagName zugreifen...ich verzweifle noch... :(

      lg
      tobi

      1. Hallo,

        Die Kernfrage ist, ob der Browser das Dokument (fehlerfrei) als XML verarbeitet hat, also in responseXML ein XML-Dokument gespeichert ist.

        Wenn ich responseXML.documentElement ausgeben lasse kommt als ergebnis null.

        Also lautet die Antwort NEIN.

        Das kann verschiedene Ursachen haben - mit welchem MIME-Typ sendet der Webserver das XML-Dokument an den Browser? Es sollte application/xml sein.

        (Auch das wäre mit Firebug wunderbar untersuchbar...)

        Mathias