Probé esto con ese xml (lo llamé data.xml) y funciona perfectamente en Explorer 7 y el resto de los navegadores que probé:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title></title>
<script>
function $(id){
return document.getElementById(id);
}
function http(){
if(window.XMLHttpRequest){
return new XMLHttpRequest();
}else{
try{
return new ActiveXObject('Microsoft.XMLHTTP');
}catch(e){
alert('Su navegador no soporta AJAX');
return false;
}
}
}
function mostrar(){
H=new http();
if(!H)return;
H.open('get','data.xml',true);
H.onreadystatechange=function(){
if(H.readyState==4){
try{
var nodos=H.responseXML;
tabular(nodos);
}catch(e){
alert('problema al acceder a la información xml')
}
try{
H.abort();
H.onreadystatechange=null;
}catch(e){}
}else{
document.getElementsByTagName('body')[0].innerHTML='cargando...';
}
}
H.send(null);
}
function tabular(xml){
var Table=document.createElement('table');
var myTable=document.createElement('tbody');
for (i = 0; i < xml.getElementsByTagName('factura').length; i++){
entro = true;
var ite = xml.getElementsByTagName('factura')[i];
var id = ite.getElementsByTagName('id')[0].firstChild.data;
var fecha = ite.getElementsByTagName('fecha')[0].firstChild.data;
var nFactura = ite.getElementsByTagName('nFactura')[0].firstChild.data;
var cliente = ite.getElementsByTagName('cliente')[0].firstChild.data;
var importe = ite.getElementsByTagName('importe')[0].firstChild.data;
var row = document.createElement("tr");
var cldChk = document.createElement("td");
var cldId= document.createElement("td");
var cldFecha= document.createElement("td");
var cldFactura= document.createElement("td");
var cldCliente= document.createElement("td");
var cldImporte= document.createElement("td");
cldChk.innerHTML = "<input type='checkbox' name='rd_factura' value="+id+" onclick='sumaFactura(this)'>";
cldId.innerHTML = + id ;
cldFecha.innerHTML = fecha ;
cldFactura.innerHTML = nFactura ;
cldCliente.innerHTML = cliente;
cldImporte.innerHTML = importe ;
row.appendChild(cldChk);
row.appendChild(cldFecha);
row.appendChild(cldFactura);
row.appendChild(cldCliente);
row.appendChild(cldImporte);
myTable.appendChild(row);
}
Table.appendChild(myTable);
document.getElementsByTagName('body')[0].innerHTML='';
document.getElementsByTagName('body')[0].appendChild(Table);
}
window.onload=mostrar;
</script>
</head>
<body>
</body>
</html>