Browserunabhängig XML auslesen

alexs1981

Grünschnabel
Hallo!

Ich möchte ein XML-Dokument über eine AJAX-Aufruf laden und dann auf den Inhalt zugreifen.

Die XML-Datei hat folgenden Inhalt:

Code:
<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<ajaxupdate>
  <fullname>
    Vorname Nachname
  </fullname>
</ajaxupdate>

Ich lade das XML-Dokument aus dem Ajax-Response mit (der Ajax-Response steht in "res"!)

Code:
var resXML = Try.these(
  function() { return new DOMParser().parseFromString(res.responseText, 'text/xml'); },
  function() { var xmldom = new ActiveXObject('Microsoft.XMLDOM'); xmldom.loadXML(res.responseText); return xmldom; }
);

Über die Variable "resXML" kann ich dann auf den Inhalt zugreifen.

Code:
if (resXML)
{
  var fullname = resXML.getElementsByTagName('fullname')[0].childNodes[0].nodeValue;
}

Die Variable "fullname" wird im Mozilla Firefox mit "Vorname Nachname" gefüllt, aber der Internet Explorer bricht die Ausführung von weiteren Javascript-Zeilen ab, gibt aber auch keinen Fehler aus.
Was ist an meinem Aufruf falsch?
 
Ich suche nache einer Lösung auf die XML-Daten zuzugreifen. Den Ajax-Aufruf habe ich hier nicht weiter aufgeführt, weil er schon fehlerfrei funktioniert. Mich interessiert die Weiterverarbeitung der XML-Daten im Internet Explorer.
 
Hallo,

das XMLHttpRequest-Objekt besitzt doch schon das Feld responseXML, das ein entsprechendes Dokumentobjekt referenziert. Warum verwendest du nicht gleich dieses?

Grüße,
Matthias
 
ok das responseXML-Objekt kann ich natürlich auch verwenden. Aber mir geht es darum, wie ich browserunabhängig darauf zugreifen kann. Leider funktioniert dieser Zugriffsaufruf den ich oben angegeben habe auch mit dem responseXML-Objekt nur im Mozilla und nicht im Internet Explorer.
 
Hi.

Also bei mir funktioniert das so. Du mußt da noch einen anderen Fehler drin haben. Mach am besten mal ein minimales, komplettes Beispiel fertig wo der Fehler auftritt.

HTML:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html> <head>
<title> reqaj.html </title>
<script type="text/javascript">
<!--

function newRequest()
{
   try {
      if (window.XMLHttpRequest) {
         return new XMLHttpRequest();
      } else {
         return new ActiveXObject("MSXML2.XMLHTTP");
      }
   } catch (e) {
      return false;
   }
}

function getFullname() {
   var req;
   if (req = newRequest()) {
      req.open("GET", "daten.xml", false);
      req.send("");
      
      alert(req.responseText);
      var fullname = req.responseXML.getElementsByTagName("fullname");
      alert("Fullname: " + fullname[0].childNodes[0].nodeValue);
   }
}

// -->
</script>
</head>
<body onload="getFullname()">
</body> </html>
Gruß
 
Zuletzt bearbeitet:
Ich habe den Fehler gefunden. Ich hatte einen Tag im XML falsch geschrieben und JavaScript konnte so nicht über .getElementsByTagName darauf zugreifen. Schlimm ist dabei, dass es keinerlei Javascript-Fehlermeldung gibt.

Ich greife nun mit dem responseXML-Objekt auf den Inhalt zu. Das ist viel einfacher als mit der Try.these-function.

Code:
for(var i=0;i<resXML.getElementsByTagName('ajaxupdate').length;i++)
{
  var nAjaxUpdate = resXML.getElementsByTagName('ajaxupdate')[i];
  var nFullName = nAjaxUpdate.getElementsByTagName('fullname')[0].childNodes[0].nodeValue;
}

Vielen Dank für die Hilfen!
Gruß, alexs
 

Neue Beiträge

Zurück