首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 处理responseXML传回的XML数据问题 [已结贴,结贴人:rainzero]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-12 21:15:52 楼主
    处理responseXML传回的XML数据,数据已经获取到了,但是我想用appendChild()方法在oRes接点下添加oAdd接点(在表格中插入一行),但是怎么都添加不了,请问这样使用这个方法有什么问题?错误提示为,不支持此接口
    -----------------------------------------------------
    function processResponse() {
              if (XMLHttpReq.readyState == 4) { // 判断对象状态
                  if (XMLHttpReq.status == 200) { // 信息已经成功返回,开始处理信息
                                var oRestr=document.getElementsByTagName("tr")[0];
                                window.alert(oRes.nodeName);
                                var oAdd=XMLHttpReq.responseXML.getElementsByTagName("tr")[0];
                                window.alert(oAdd.nodeName);
                                oRestr.parentNode.appendChild(oAdd);
                } else { //页面不正常
                    window.alert("您所请求的页面有异常。");
                }
            }
        }
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-12 21:35:041楼 得分:0
    。。。。。。。。。。。。。。。。。。。
    觉得写法对嘛?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-12 21:42:242楼 得分:0
    我就是不知道呀,请指点一下,谢谢!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-12 21:43:303楼 得分:0
    可以这样?
    appendChild xml里面的数据..那么xml的父节点到底是谁? 还是create一个节点再appendChild吧..
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-12 21:51:094楼 得分:0
    create一个节点那如何把XML中的数据放到这个节点下面呀
    下面是XML
    ------------------------
    <?xml version='1.0' encoding='UTF-8'?>
    <table>
    <tr id='OA12345'>
    <td> <div align='center'>
    <img src='image/read.png' align='absmiddle' style='cursor:hand'/>
    </div> </td>
    <td> <div align='center'>
    <img src='image/oano.png' width='18' height='18' align='absmiddle'/>
    </div> </td>
    <td style='overflow:hidden; text-overflow:ellipsis;'>OANum </td>
    <td style='overflow:hidden; text-overflow:ellipsis;'>OANum </td>
    <td style='overflow:hidden; text-overflow:ellipsis;'>OANum </td>
    <td style='overflow:hidden; text-overflow:ellipsis;'>OANum </td>
    <td style='overflow:hidden; text-overflow:ellipsis;'>OANum </td>
    <td style='overflow:hidden; text-overflow:ellipsis;'>OANum </td>
    <td style='overflow:hidden; text-overflow:ellipsis;'>OANum </td>
    <td style='overflow:hidden; text-overflow:ellipsis;'>aaa </td>
    </tr>
    </table>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-12 22:10:005楼 得分:0
    window.alert(oAdd.nodeName);
    都可以正确的得到接点的名称呀
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fason
    • 等级:
    发表于:2008-06-13 02:01:256楼 得分:0
    In firefox, you can use 'importNode' function which is introduced in DOM2. But in IE, I suggest you create the elements according to the XML data.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • nanyang9
    • 等级:
    发表于:2008-06-13 05:47:337楼 得分:0
    var oAdd=XMLHttpReq.responseXML.getElementsByTagName("tr")[0];

    改成下面的试试.不懂就查查手册,看看.documentElement的含意
    var oAdd=XMLHttpReq.responseXML.documentElement.getElementsByTagName("tr")[0];
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • nanyang9
    • 等级:
    发表于:2008-06-13 05:55:168楼 得分:0
    如果不是我说的问题,那就应该是楼上 fason 所说的,两个不同的DOM中的节点不同直接使用,需要直接在网页的Document中根据XML的数据来创建新节点再插入.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-13 09:24:009楼 得分:0


    if(req.readyState==4 && req.status==200)
              {                     
                    var dtable=document.getElementById('tshow');             

                    var nl = req.responseXML.getElementsByTagName( 'book' );
                    for( var i = 0; i < nl.length; i++ )
                    {               
                          var nli=nl.item(i);                   
                          var eauthor=nli.getElementsByTagName('author');
                          var author=eauthor.item(0).firstChild.nodeValue;
                          var etitle=nli.getElementsByTagName('title');               
                          var title=etitle.item(0).firstChild.nodeValue;                 
                     
                          var elTr = dtable.insertRow( -1 );
                          var elAuthorTd = elTr.insertCell( -1 );
                          elAuthorTd.innerHTML = author;
                          var elTitleTd = elTr.insertCell( -1 );
                          elTitleTd.innerHTML = title;                               
                    }                   
              } 

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • showbo
    • 等级:
    发表于:2008-06-13 09:52:5810楼 得分:100
    var oAdd=XMLHttpReq.responseXML.getElementsByTagName("tr")[0];
    oRes.appendChild(oAdd);

    不能这样来添加,而且在ie下对table使用appendChild时,是在tbody标签中才有用,table.appendChild可以加入行,但不显示,而且返回的节点并不是table的tr,你oRes.appendChild(oAdd); 会出错

    XML code
    <?xml version='1.0' encoding='UTF-8'?> <table> <tr id='OA12345'> <td> <div align='center'> <img src='image/read.png' align='absmiddle' style='cursor:hand'/> </div> </td> <td> <div align='center'> <img src='image/oano.png' width='18' height='18' align='absmiddle'/> </div> </td> <td style='overflow:hidden; text-overflow:ellipsis;'>OANum </td> <td style='overflow:hidden; text-overflow:ellipsis;'>OANum </td> <td style='overflow:hidden; text-overflow:ellipsis;'>OANum </td> <td style='overflow:hidden; text-overflow:ellipsis;'>OANum </td> <td style='overflow:hidden; text-overflow:ellipsis;'>OANum </td> <td style='overflow:hidden; text-overflow:ellipsis;'>OANum </td> <td style='overflow:hidden; text-overflow:ellipsis;'>OANum </td> <td style='overflow:hidden; text-overflow:ellipsis;'>aaa </td> </tr> </table>


    JScript code
    function processResponse() { if (XMLHttpReq.readyState == 4) { // 判断对象状态 if (XMLHttpReq.status == 200) { // 信息已经成功返回,开始处理信息 AddRow(XMLHttpReq.responseXML);//===========调用函数 } else { //页面不正常 window.alert("您所请求的页面有异常。"); } } } function AddRow(dom) { var tb=document.getElementById("表的id"); var tr=tb.insertRow(tb.rows.length); var XMLTR=dom.getElementsByTagName("tr")[0]; tr.id=XMLTR.getAttribute("id");//设置id var XMLTD=XMLTR.getElementsByTagName("td"); var td; for(var i=0;i<XMLTD.length;i++) { td=tr.insertCell(i); td.innerHTML=XMLTD[i].firstChild.nodeValue; } }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-13 11:06:4511楼 得分:0
    谢谢,可以了,但是 <img>这个节点不行,我改了一下XML文档,在td节点下面增加一个CDataSecion节点,但是我把td.innerHTML=XMLTD[i].firstChild.nodeValue;改成td.innerHTML=XMLTD[i].firstChild.firstChild.odeValue;却不行,请问应该怎么改
    ---------------------------------------------------------------
    <?xml version='1.0' encoding='UTF-8'?>
    <table>
    <tr id='OA12345'>
    <td> <![CDATA[ <div align='center'> <img src='image/read.png' align='absmiddle' style='cursor:hand'/> </div>]] </td>
    <td> <![CDATA[ <div align='center'> <img src='image/read.png' align='absmiddle' style='cursor:hand'/> </div>]] </td>
    <td> <![CDATA[OANum]] </td>
    <td> <![CDATA[OANum]] </td>
    <td> <![CDATA[OANum]] </td>
    <td> <![CDATA[OANum]] </td>
    <td> <![CDATA[OANum]] </td>
    <td> <![CDATA[OANum]] </td>
    <td> <![CDATA[OANum]] </td>
    <td> <![CDATA[aaa]] </td>
    </tr>
    </table>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • showbo
    • 等级:
    发表于:2008-06-13 11:34:0412楼 得分:0
    检查是不是你的xml节点不正确?

    <?xml version='1.0' encoding='UTF-8'?>
    <table>
    <tr id='OA12345'>
    <td> <![CDATA[ <div align='center'> <img src='image/read.png' align='absmiddle' style='cursor:hand'/> </div>]]> </td>
    <td> <![CDATA[ <div align='center'> <img src='image/read.png' align='absmiddle' style='cursor:hand'/> </div>]]> </td>
    <td> <![CDATA[OANum]]> </td>
    <td> <![CDATA[OANum]]> </td>
    <td> <![CDATA[OANum]]> </td>
    <td> <![CDATA[OANum]]> </td>
    <td> <![CDATA[OANum]]> </td>
    <td> <![CDATA[OANum]]> </td>
    <td> <![CDATA[OANum]]> </td>
    <td> <![CDATA[aaa]]> </td>
    </tr>
    </table>


    并且不需要再td.innerHTML=XMLTD[i].firstChild.firstChild.nodeValue
    可以td.innerHTML=XMLTD[i].firstChild.nodeValue, <![CDATA[]]>会自动去掉的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-13 11:50:3013楼 得分:0
    实在太感谢了,XML文档问题,问题全部都解决了,但是还有一个问题想请教一下
    要在HTML中插入XML文档的节点是不是一定要用XSLT来进行转换了以后才可以呀?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • showbo
    • 等级:
    发表于:2008-06-13 11:54:1014楼 得分:0
    引用 13 楼 rainzero 的回复:
    实在太感谢了,XML文档问题,问题全部都解决了,但是还有一个问题想请教一下
    要在HTML中插入XML文档的节点是不是一定要用XSLT来进行转换了以后才可以呀?


    XSLT是直接将xml文档解释为html标签,而不是插入了,插入是js来做的
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved