posts - 165, comments - 198, trackbacks - 0, articles - 1
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
问题: 对javascript Dom 解读 xml  的问题
解决: 网页中 javascript 学习

过程 js
function searchSales(){
    
var url = "MyXml.xml";           // url 不限制 可以为 jsp  *.do  只要 out.print()出来的 是 xml 格式
    
var myAjax = new Ajax.Request(
              url,
    
{
    method: 'get',
    onComplete: action              // 成功得到 requ 的挂载方法
    }
);
}


function  action(request)
{
    
var dom = request.responseXML;    //返回 javascript Dom 解读对象
    
    
var list = dom.getElementsByTagName('Weapon'); 
                                //返回标签名<Weapon>  集合项可用.item(i) 得出  .firstChild.nodeValue得值
 
    
forvar i = 0; i < list.length; i++ ) {
        
var nli = list.item(i);
        
var W = nli.getElementsByTagName( 'W' );
        window.alert(W.item(
0).firstChild.nodeValue);
    }

     
}

HTML 页面

</HEAD>
<head>
    
<script src="prototype1.5.0.js"></script>
    
<script src="xml.js"></script>
</head>
<input id='test' type="submit" value="test" onclick="searchSales();" >
</HTML>

XML

<?xml version="1.0" encoding="utf-8" ?>
<Login>

    
<Weapon id="1">
        
<Text="光束剑" Value="0">1</W>
        
<Text="光束配刀" Value="1">2</W>
    
</Weapon>

    
<Weapon id="2">
        
<Text="光束剑" Value="0">3</W>
        
<Text="光束配刀" Value="1">4</W>
    
</Weapon>
    
     
<Weapon id="3">
        
<Text="光束剑" Value="0">5</W>
        
<Text="光束配刀" Value="1">6</W>
    
</Weapon>
</Login>

心得: 调试了很久当时对javascript 的不熟悉,但我没有放弃 去网上查,问同事 最后成功
                 --------------------- 坚持就是胜利 ------------------

评论

# re: My Ajax  回复  更多评论   

2007-05-18 17:35 by G_G
function searchSales(){
    
var url = "MyXml.xml";
    
var myAjax = new Ajax.Request(
    url,
    
{
    method: 'get',
    onComplete: test
    }
);
}


function test(request)
{
    
var dom = request.responseXML;
    
var root = dom.documentElement;
//    window.alert( root );
    
    
var list = dom.getElementsByTagName('W');  

    
forvar i = 0; i < list.length; i++ ) {
        window.alert(list.item(i).firstChild.nodeValue);
    }

     
}

得出结果是 1 2 3 4 5 6

# re: My Ajax  回复  更多评论   

2007-05-21 14:17 by G_G
对象 属性  方法
XMLDocument
documentElement
 得到   root
HTMLCollection   length  得到长度 item(i)  得到 Element
Element .firstChild.nodeValue 得到 value?    getAttribute('id') 得到 attribut

 

 其他属性方法参见 http://wddavid.cnblogs.com/archive/2005/07/25/199358.html
function searchSales(){
    
var url = "MyXml.xml";
    
var myAjax = new Ajax.Request(
    url,
    
{
    method: 'get',
    onComplete: test
    }
);
}


function test(request)
{
    
var dom = request.responseXML;
    
var root = dom.documentElement;    
    
var body = root.getElementsByTagName('body').item(0);
    
var pid_1 = function(){
        
var listP = body.getElementsByTagName('p');
        
for(var i=0; i<listP.length; i++){
            
if(listP.item(i).getAttribute('id')=='2')
                
return listP.item(i);
        }

        
return null;
    }

//    alert(oHtml.childNodes.item(0));
//
    alert(oHead.parentNode==oHtml);  
//
    alert( oP.item(0).getAttribute('id')  ); 
//
    alert( oP.item(0).attributes.getNamedItem("id").nodeValue  ); 
//
    alert( oP.getAttribute('id') );
    alert(pid_1().firstChild.nodeValue);
}

# re: My Ajax  回复  更多评论   

2007-05-21 17:20 by G_G
function searchSales(){
    
var url = "MyXml.xml";
    
var myAjax = new Ajax.Request(
    url,
    
{
    method: 'get',
    onComplete: test
    }
);
}


 
function getMyElement(obj,tagName,attrName,value) {
         
var list = obj.getElementsByTagName(tagName);
        
for(var i=0; i<list.length; i++){
            
if(list.item(i).getAttribute(attrName)==value)
                
return obj.getElementsByTagName(tagName).item(i);
        }

        
return null;
 }

 
function test(request)
{
    
var dom = request.responseXML;
    
var root = dom.documentElement;    
    
var weapon = getMyElement(root,'Weapon','id','3');
    
var W = getMyElement(weapon,'W','Value','0');
    window.alert(W.firstChild.nodeValue);
}

哈哈 高级的  ...

# 动态javascript建表  回复  更多评论   

2007-06-05 17:37 by G_G
问题: Ajax 读出来xml  怎么由 javascript 建表
解决:   var dom = new ActiveXObject("Microsoft.XMLDOM"); //得到 XMLDom 对象
            并 dom.loadXML( request.responseText ) ; 
                              由prototype 的 request.responseText  填 充 XMLDom
         
 http://localhost:7000/xxs/test.do        返回
         一个String  弄出来的 XML  大概就如下
  <?xml version="1.0" encoding="gb2312" ?> 
<mans>
<man>
  
<name>google</name> 
  
<avg>23</avg> 
  
</man>
<man>
  
<name>heha</name> 
  
<avg>23</avg> 
  
</man>
  
</mans>
  
 
 

<html>

  
<head>
    
<title>MyHtml.html</title>
      
<SCRIPT language="Javascript" src="prototype1.5.0.js"></SCRIPT>
  
</head>
      
<body>
        
<input id='test' type="submit" value="test" onclick="searchSales();" >
    
</body>
</html>

<script type="text/javascript">
<!--
    
function searchSales(){
        
var url = 'http://localhost:7000/xxs/test.do';           // url 不限制 可以为 jsp  *.do  只要 out.print()出来的 是 xml 格式
        var myAjax = new Ajax.Request(
        url,
        
{
        method: 'get',
        onComplete: action              
// 成功得到 requ 的挂载方法
        }
);
    }

    
    
    
function  action(request)
    
{
        
var dom = new ActiveXObject("Microsoft.XMLDOM");
        dom.loadXML(request.responseText);
        
var root = dom.documentElement;
        
var body = document.getElementsByTagName('body')[0];
        
var my_array = new Array();
        my_array[
0= "name";
        my_array[
1= "avg";
        
var table_1 = table(root,"man",my_array);
        
        table_1.setAttribute(
"border","2");

        body.appendChild(table_1);
    }

    
    
    
function table(root,trName,tdNames) {
        
var tbl     = document.createElement('table')
        
var tblBody =  document.createElement('tbody')
        
var rows = root.getElementsByTagName(trName);
        
for (var i = 0; i <rows.length; i++{
            
var tr = document.createElement('tr')
            
for(var j=0;j<tdNames.length;j++){
                    
var col = rows.item(i).getElementsByTagName(tdNames[j])[0];
                    
var value =  col.firstChild.nodeValue ;
                     
var td = document.createElement('td');
                     td.innerHTML 
= value ;
                      tr.appendChild(td);
           }

            tblBody.appendChild(tr);
        }

       tbl.appendChild(tblBody);
     
return tbl;
}


//-->
</script>

# re: XMLDOM 详细说明和网上有关资源 + 动态javascript建表  回复  更多评论   

2007-06-08 20:46 by wqdqw
qwd

只有注册用户登录后才能发表评论。


网站导航: