给你一个我以前写的解析程序:function String.prototype.getXml(searchfor,index)
{
if (index == null || index ==0) index =1;
// index从1开始
var start="<"+searchfor+">";
var end="</"+searchfor+">";
var a=0;
var b=0;
for (var i=0;(i<index && a>-1 && b>-1) ;i++ )
{
a=this.indexOf(start,b);
b=this.indexOf(end,a);
}
if (a<0 || b<0) 
{
return "notfound";
}
a+=start.length;
return this.substring(a,b);
}

解决方案 »

  1.   

    我感觉做小型的解析的时候,用js也许比用xmldom要节省一些资源。但是要是解析的比较复杂的话,还是用xmldom比较好,而且我这个js函数也只能解析不代属性的xml,带属性的感觉太复杂了,比较不好做。下面是一个常规数组的例子,散列数组的我手头没有例子。<html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>emu's xml function</title>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function String.prototype.getXml(searchfor,index)
    {
    if (index == null || index ==0) index =1;
    // index从1开始
    var start="<"+searchfor+">";
    var end="</"+searchfor+">";
    var a=0;
    var b=0;
    for (var i=0;(i<index && a>-1 && b>-1) ;i++ )
    {
    a=this.indexOf(start,b);
    b=this.indexOf(end,a);
    }
    if (a<0 || b<0) 
    {
    return "notfound";
    }
    a+=start.length;
    return this.substring(a,b);
    }var  srcString = "<abc>aa</abc><abc>bb</abc><abc>cc</abc><abc>dd</abc><abc>ee</abc><abc>ff</abc>";
    var result = new Array();
    var x;for (var i=0;x!="notfound";i++)
    {
    x = srcString.getXml("abc",i+1)
    if (x!="notfound")
    result[i] = x;
    }alert(result)//-->
    </SCRIPT>
    </head>
    <body></body>
    </html>
      

  2.   

    谢谢 emu(ston) 兄提供程序!
    但是,我的想法是能解析大多的XML字符,而并非一种特殊的标记。关于如何解析,我现在的想法有两种:
    1、顺序依次查找法:比如第一次找“<”,第二次找“ ”(空格),第三次找“=”,然后找“"”(引号),再找引号,找"/"或找">"…………
           但是,很明显,当一个属性中含有特殊字符时,或有包含特殊字符的CDATA数据时,就会出错!
    2、“分牌”方法:就好象把一付扑克中相同的牌分好一样,依次读每一个字符,将字符放到数组的指定位置。但是我担心这样的方法是否会很慢!
           希望曾经编写过编译器的朋友或编译原理考高分的朋友来一起探讨这个问题!
      

  3.   

    “能解析大多的XML字符,而并非一种特殊的标记”是什么意思??其实xml中用属性表达的东西都可以用子对象表示啊,如果要用js来解析xml的话采取这样的方式要方便的多,而且由于不使用属性,特殊字符的问题也就不成为问题了。这段代码我自己在长期使用中感觉还是实用的,作为不使用控件的代价,就是在带下标解析的时候效率可能低了些。
      

  4.   

    等你写完了,IE8都出来了.
    建议去找一些XML解析器的源代码.
      

  5.   

    小弟在学习使用XML中,遇到这样的问题,IE5.0等版本的浏览不支持msxml3.0。要使用的话,必须另外下载————显然,如果要把这样的技术应用于实际,推广起来很困难(不是每个用户都愿意安装插件的)。~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    一般是在服务器端加一个filter!
    判断如果客户端的版本
    大于1e5则直接输出到客户端!否则在服务器端解析!
      

  6.   

    用什么解析器?
    var xmldoc = new ActiveXObject("Microsoft.XMLDOM")
    var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")
    我一直都在最低级的IE 5.0下调试XML,我用得很顺,没有什么限制的
      

  7.   

    js写太麻烦,主要是如果只是读XML,那其实做起来很简单的。 
    但如果又读又写,那就比较麻烦。如果还有注释的话,还得先消除注释。