svg4you: Zum Thread "AJAX im IE: responseXML nicht sinnvoll nutzbar"

Tach Forum,

unter </archiv/2006/8/t134713/> hatte Cheatah Probleme mit der Eigenschaft responseXML bei IE-Nutzung mit lokalen XML-Ressourcen berichtet, speziell zur Anwendung von DOM-Methoden. Ich konnte diese nicht nachvollziehen, weil ich wohl das lokal überlesen hatte.

Sofern mit lokal ein Zugriff über file://... mit Abwesenheit eines Content-Type-Response-Headers (text/xml oder application/xml) gemeint war, kann ich das Problem nun auch nachvollziehen. Das Problem hatte sich ja irgendwie erledigt, aber eine brauchbare Lösung fand ich dort nicht. Vielleicht liefert der folgende Testcase unter Verwendung der im IE existierenden Eigenschaften responseBody bzw. responseStream eine solche.

XML-Dokument (test.xml, hier im Verzeichnis C:\Temp abgelegt):

  
<?xml version="1.0" encoding="ISO-8859-1"?>  
<wurzel>  
<kind>kindinhalt1</kind>  
<kind>kindinhalt2</kind>  
<kind>kindinhalt3</kind>  
</wurzel>

XHTML-Testaufruf:

  
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">  
<head>  
<title>AJAX-Test</title>  
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />  
<script type="text/javascript">  
/* <![CDATA[ */  

  
function Test()  
{  
 var req=null;  
  
 if(window.XMLHttpRequest)req=new XMLHttpRequest();  
 else if(window.ActiveXObject)req=new ActiveXObject("Microsoft.XMLHTTP");  
  
  if(req)  
  {  
    req.open("GET","file:///C:/Temp/test.xml",false); // zur Vereinfachung synchroner Aufruf  
    req.send(null);  
  
    // req.responseBody   - MSXML ab 2.0  
    // req.responseStream - MSXML ab 3.0  
  
    if(!req.responseXML.documentElement && req.responseStream)req.responseXML.load(req.responseStream);  
  
    alert(req.responseXML.documentElement.tagName); // wurzel  
    alert(req.responseXML.getElementsByTagName("kind").length); // 3  
    alert(req.responseXML.getElementsByTagName("kind").item(1).firstChild.nodeValue); // kindinhalt2  
  }  
}

/* ]]> */

  
</script>  
</head>  
<body onload="Test()">  
<p>Test mit responseXML ...</p>  
</body>  
</html>

Die auskommentierten Ergebnisse (wurzel, 3, kindinhalt2) werden gleichermaßen mit IE 6.0, FF 1.5.0.6 und Opera 9.01 unter XP erhalten.

Man liest sich,
svg4you

  1. Hallo svg4you.

    Nur zur Info: [code]-Blöcke können ineinander verschachtelt werden.

    Einen schönen Sonntag noch.

    Gruß, Mathias

    --
    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
    „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
    [HTML Design Constraints: Logical Markup]