none
js解析xml RRS feed

  • 问题

  • xml如下
    <?xml version="1.0" ?>
    <webplayer>
    	<config>
    		<parent type="1" hwnd="0"/>
    			<videoview  show="1" posx="0" posy="0" poscx="320" poscy="240"/>  
    			<controlview show="1" posx="0" posy="240" poscx="320" poscy="80"/> 
    			<playlistview show="0" posx="0" posy="0" poscx="320" poscy="240"/> 
    		<ShowP2PUI>0</ShowP2PUI>
    	</config>  
    	<programlist>
    		<program programname="clock" filetype="avi" url="http://192.168.0.87:80/VIEWGOOD_DAS/VIEWGOOD.das"> 
    			<param name="username" value="guest"/>
    			<param name="playercount" value="1"/>
    			<param name="userpass" value=""/>  
    			<param name="user_id" value="3"/> 
    			<param name="usernumber" value="10000"/> 
    			<param name="fileid" value="2"/> 
    			<param name="program_id" value="6"/>
    			<param name="part_name" value="clock"/>
    			<param name="part_no" value="1"/>  
    			<param name="download" value="0"/> 
    			<param name="webip" value="192.168.0.70"/>
    			 <param name="peerip" value="127.0.0.1"/> 
    			<param name="userdata" value=""/>
    			<param name="areaid" value="0"/> 
    			<param name="typeid" value="2"/>
    			<param name="usep2p" value="1"/> 
    			<param name="hash_info" value="CC0CA9DA85FED4D8B0D8227216CAFF88AF7EA5FA"/> 
    			<param name="SP" value="VIEWGOOD"/> 
    			<param name="sp_id" value="1"/>  
    			<param name="IDE" value="VIEWGOOD"/> 
    			<param name="classname" value="动作片"/> 
    			<param name="playtime" value="000012"/>
    			 <param name="playflag" value="0"/> 
    			 <param name="lastposition" value="0"/>  
    			<param name="prevfileid" value="6"/> 
    			<param name="inbuilt_mode" value="0"/>
    			<param name="BufferDelay" value="1000"/>
    		</program>
    	</programlist>  
    	
    </webplayer>  
    
    
    
    如何读取<program programname="clock"  中 “clock”的值  和<param name="program_id" value="6"/>
    中的‘6’
    • 已移动 Sheng Jiang 蒋晟 2009年7月3日 12:59 客户端脚本问题 (发件人:ASP.NET 与 AJAX)
    2009年7月3日 3:39

答案

    • 已标记为答案 MrYang 2009年7月6日 6:13
    2009年7月3日 3:57
    版主
  • xmldom+xpath就可以了
    参考
    http://msdn.microsoft.com/zh-cn/library/ms757828%28en-us,VS.85%29.aspx
    【孟子E章】
    • 已标记为答案 MrYang 2009年7月6日 6:13
    2009年7月3日 4:52
    版主
  • 您好,以下代码在Ie8上调试成功,请参考
    <html>
    <head>
    <script>
    function ReadXml()
    {
       var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.3.0");
       xmlDoc.async = false;
       xmlDoc.loadXML("<webplayer><programlist><program programname=\"clock\" filetype=\"avi\"

    url=\"http://192.168.0.87:80/VIEWGOOD_DAS/VIEWGOOD.das\"><param name=\"program_id\" value=\"6

    \"/></program></programlist></webplayer>"); //加载xml文档;如果是加载文件可替换成oad()方法
       if (xmlDoc.parseError.errorCode != 0) {
       //判断是否出错
       var myErr = xmlDoc.parseError; 
        alert(myErr.reason);
       } else
    {
       alert("load success!");
       var currNode = xmlDoc.selectSingleNode("//webplayer/programlist/program"); //获取单一节点(这里就是xpath的例子)
       alert(currNode.getAttribute("programname")); //获取programname属性值
       var objNodeList = xmlDoc.documentElement.selectNodes("//webplayer/programlist/program/param"); //获取节点集合
       for(var i = 0;i<objNodeList.length;i++)
       {
              //如果name为program_id则获取值
               if(objNodeList[i].getAttribute("name")=="program_id")
               alert(objNodeList[i].getAttribute("value"));
       }
    }

    }
    </script>
    </head>
    <body>
    <div>
    ReadXmlTest;
    <script>
    ReadXml();
    </script>
    </div>
    </body>
    </html>
    在这里仅仅提供一个基本代码,如果要处理更复杂的问题,请参考孟宪会MVP, 版主提供的sdk。

    • 已标记为答案 MrYang 2009年7月6日 6:12
    2009年7月4日 7:21

全部回复