应该是个比较基础的问题,但是困扰我很久,服务器生成的xml文件是没有问题,主要是我用editplus新建的xml有问题。
  一知半解不是好事情,所以开了这个贴,大家一起讨论一下,下面用到的源码直接来自于网络:
  HTML:
  <!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
 <head>
  <title> new document </title>
  <meta name="generator" content="editplus">
  <meta name="author" content="">
  <meta name="keywords" content="">
  <meta name="description" content="">
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head>
  <script type="text/javascript" src="js/jquery.js" ></script>
  <script type="text/javascript">
$.ajax({ 
url:'test.xml', 
type: 'get', 
datatype: 'xml',//这里可以不写,但千万别写text或者html!!! 
timeout: 1000, 
error: function(xml){ 
  alert('error loading xml document'+xml); 
}, 
success: function(xml){ 
alert(xml); 
   $(xml).find("student").each(function(i){ 
 var id=$(this).children("id"); //取对象 
 var id_value=$(this).children("id").text(); //取文本 
 alert(id_value);//这里就是id的值了。 
 alert($(this).attr("email")); //这里能显示student下的email属性。 
 //最后么输出了,这个是cssrain的写法,貌似比macnie更jq一点 
 $("<li></li>").html(id_value +":"+$(this).attr("email")).appendTo("ol"); 
  }); 

}); 
</script> <body>
  <ol></ol>
 </body>
</html>
    XML部分
   <?xml version="1.0" encoding="utf-8"?> 
<stulist> 
<student email="[email protected]"> 
<name>zhangsan</name> 
<id>1</id> 
</student> 
<student email="[email protected]"> 
   <name>lisi</name> 
<id>2</id> 
</student> 
</stulist>
备注,jquery文件请大家自备,xml文件请用editplus创建,这个问题本人一直没有弄明了,当然有很多替换的方法,但本人只想了解原因,ff下正常,ie下显示获取到了xml文件,但没有解析。
至于Content-Type,静态xml如何设置?
谢谢大家先!

解决方案 »

  1.   

    JQuery 和 IE 的bug 吧如果你吧 studlist 换成 a或者任意DOM标签,就能找到
      

  2.   

    那么具体是原因引起的呢,此外,发现$(this).children("id").text()无法获取值
    以前写过xml搜索的js,后来是更改了xml格式才ok的
    我是想不动数据结构,只更改js代码,不过在ie下容易出问题
      

  3.   

    试试在success callback里加上判断if (typeof xml == "string") {
           xmlDom = new ActiveXObject("Microsoft.XMLDOM");
           xmlDom.async = false;
           xmlDom.loadXML(xml);
           xml = xmlDom
         }
      

  4.   

    本地的xml文件根元素必须是<xml></xml>
    Ajax的dataType必须是大写的XML才可以运行
      

  5.   

    这种方式可以获取,但ie下还是不能取得xml类容里的值
      

  6.   

    <script type="text/javascript">
    function createXml(str){ 
      if(document.all){ 
      var xmlDom=new ActiveXObject("Microsoft.XMLDOM") 
      xmlDom.loadXML(str) 
      return xmlDom 
      } 
      else 
      return new DOMParser().parseFromString(str, "text/xml") 
    }
    $(document).ready(function(){
       $("a").click(function(event){
        var txt = "<musiclist><music><musicid>3088</musicid></music></musiclist>";
    //alert(txt);
    var x = createXml(txt);

    var a = $(x).find("musicid").eq(0).text();
    alert(a);
         event.preventDefault();
       });
       
    });
    </script>
      

  7.   


    你是对的,实践证明根元素为xml,IE是可以读取的!
      

  8.   

    你这个问题很简单。。没那么复杂datatype: 'xml'改成dataType:'xml'就可以了...