有没有人知道在客户端用javascript将xml文档对象转换成字符串的?就是要将字符串全部显示,包括头部

解决方案 »

  1.   

    好像不行哦,我是在ajax中通过this.xmlReq.responseXML;得到文档对象,然后想把这个文档对象显示出来,不是通过解析的形式,是想将其全部显示,
      

  2.   


    <html>
        <head>
            <meta http-equiv="content-type" content="text/html; charset=utf-8">
            <META http-equiv="Content-Style-Type" content="text/css">
            <style>        </style>
        </head>
        <script language=javascript>        var xmlReportData=null
            function XMLload(){
                xmlReportData = new ActiveXObject("Microsoft.XMLDOM");
                xmlReportData.async = "false";
                xmlReportData.onreadystatechange = function(){
                    if ( xmlReportData.readyState != 4){
                        return;
                    }else{
                        alert(xmlReportData.documentElement.xml);
                    }
                };
                xmlReportData.load( "tt.xml" );
            }
            window.onload=function(){
                XMLload()
            }
        </script></html><?xml version="1.0" encoding="gb2312"?>
    <root>
      <cartoon id="1">
        <serial>第一集 </serial>
        <title>多变的时尚与基金排名 </title>
        <imgurl>images/cartoon/1_s.jpg </imgurl>
        <iconurl>images/cartoon/1_min.jpg </iconurl>
        <link>cartoon1.html </link>
      </cartoon>
      <cartoon id="2">
        <serial>第二集 </serial>
        <title>投资理财也要中西合璧 </title>
        <imgurl>images/cartoon/2_s.jpg </imgurl>
        <iconurl>images/cartoon/2_min.jpg </iconurl>
        <link>cartoon2.html </link>
      </cartoon>
      <cartoon id="3">
        <serial>第三集 </serial>
        <title>投资要学会克服贪婪 </title>
        <imgurl>images/cartoon/3_s.jpg </imgurl>
        <iconurl>images/cartoon/3_min.jpg </iconurl>
        <link>cartoon3.html </link>
      </cartoon>
      <cartoon id="4">
        <serial>第四集 </serial>
        <title>如果你能预想挫折 </title>
        <imgurl>images/cartoon/4_s.jpg </imgurl>
        <iconurl>images/cartoon/4_min.jpg </iconurl>
        <link>cartoon4.html </link>
      </cartoon>
    </root> 
      

  3.   

    我是通过服务器端那边得到xml对象的,
    if (readyState == 4) {
    var dataS = "<font color='red'>error:The content type is "
    + this.xmlReq.getResponseHeader("content-type")
    + "</font>";//初始化数据
    //对返回类型的判断处理
    //为xml格式的数据
    if (this.type == "xml"
    || this.xmlReq.getResponseHeader("content-type")
    .indexOf("xml") >= 0) {
    dataS = this.xmlReq.responseXML;//得到XML文档对象
    。。
    但是不知道怎么拿到这个XML文档对象字符串显示,
      

  4.   

    一样的,只要得到的是xml对象,给你个多浏览器版本的,传递的url正确,服务器能正确返回xml类型就OK
    <html>
        <head>
            <meta http-equiv="content-type" content="text/html; charset=utf-8">
            <META http-equiv="Content-Style-Type" content="text/css">
            <style>        </style>
        </head>
        <script language=javascript>
            loadXML = function(fileRoute){
                xmlDoc=null;
                if (window.ActiveXObject){
                    xmlDoc = new ActiveXObject('Msxml2.DOMDocument');
                    xmlDoc.async=false;
                    xmlDoc.load(fileRoute);
                }
                else if (document.implementation && document.implementation.createDocument){
                    var xmlhttp = new window.XMLHttpRequest();
                    xmlhttp.open("GET",fileRoute,false);
                    xmlhttp.send(null);
                    var xmlDoc = xmlhttp.responseXML;
                }
                else {xmlDoc=null;}
                return xmlDoc;
            }
            var xmlDoc=loadXML('tt.xml');
            if(window.ActiveXObject)
                alert(xmlDoc.documentElement.xml)//IE
            else alert(new XMLSerializer().serializeToString(xmlDoc));//FF
        </script></html>
      

  5.   

    将var xmlDoc=loadXML('tt.xml');参数换成你的request请求url就行
      

  6.   

    我试了下出现undefinde,但是我对这个xml对象进行解析的话就可以得到数据的,
    var count = dataS.getElementsByTagName(this.tagLabel);
    for (i = 0; i < count.length; i++) {
    dataS = dataS + "第" + (i + 1) + "个" + this.tagLabel
    + ": <br>";
    for (j = 0; j < this.tagNames.length; j++) {
    if (count[i].childNodes[j].childNodes[0]) {// 对数据的存在性进行判断
    dataS = dataS
    + this.tagNames[j]
    + ": "
    + count[i].childNodes[j].childNodes[0].nodeValue
    + "<br>";
    } else {
    dataS = dataS + this.tagNames[j] + ": " + ""
    + "<br>";
    }
    }
    dataS = dataS + "<br>";
    }
      

  7.   

    dataS = this.xmlReq.responseXML;//得到XML文档对象
    这么得到的,
      

  8.   

    试下alert(new XMLSerializer().serializeToString(dataS))
      

  9.   

    if(window.ActiveXObject)
                alert(dataS.documentElement.xml)//IE
            else alert(new XMLSerializer().serializeToString(dataS));//FF
      

  10.   

    我的试IE浏览器,我也试了下alert(new XMLSerializer().serializeToString(dataS));
    还是不行。alert(new XMLSerializer())的时候连反映都没有- -!
    不知道试为什么了
    那可以知道这个xml文档对象显示xml文档的头部信息吗?如:<?xml version="1.0"encoding="gb2312"?>
      

  11.   

    是很奇怪,本地测试无任何问题
     IE下用this.xmlReq.documentElement.xml 呢?xml定义貌似获取不到
      

  12.   

    function getXmlText(oNode) {
    if(oNode.text){
    return oNode.text;
    }
        var sText = "";
        for (var i = 0; i < oNode.childNodes.length; i++) {
           if (oNode.childNodes[i].hasChildNodes()) {
               sText += getXmlText(oNode.childNodes[i]);
           } 
           else {
               sText += oNode.childNodes[i].nodeValue;
           }    }
        return sText;
    }
    function getXml(oNode) {
    if(oNode.xml){ return oNode.xml;
    }    var oSerializer = new XMLSerializer();    return oSerializer.serializeToString(oNode);}function createXmlDoc(xmlText) {
        if (!xmlText) return null;
        try {
            var xmlDom = new ActiveXObject("Microsoft.XMLDOM")
            xmlDom.loadXML(xmlText)
            return xmlDom
        }
        catch (e) {
            try {
                return new DOMParser().parseFromString(xmlText, "text/xml");
            } catch (e) {
                return null;
            }
        }
    }alert(getXml(createXmlDoc("<items><item>111</item><item>111</item></items>")));
    alert(getXmlText(createXmlDoc("<items><item>111</item><item>111</item></items>")));
      

  13.   

    http://laoney.net/post/2009/07/04/200907041154270005.aspx
      

  14.   


    其实还有个比较偏的方法,在服务器里用I/O流来读写xml.
      

  15.   

    只能通过getElementsByTagName方法来取得相关数据,太奇怪了!
      

  16.   

    用了最愚蠢的方法。直接用this.xmlReq.responseText,显示文本,汗- -!!!
    原来是服务器那边xml格式数据传输错误。。导致得到的对象就是错误的。
    ps:那些方法其实都可以的,只是服务器的失误。我很汗
    不过学到了一个方法
    就是在这种情况下,可以考虑将那个文本alert一下,看看文本有没有错误,
    谢谢各位大侠的帮助了。
      

  17.   

    呵呵,不过对于很大的xml.拼接是个很烂的方法..尤其是还用的字符串"+".尤其是对于一个大于1M的文件..
      

  18.   

    在客户端传数据到服务器的时候传一个xml文档效率高还是传一个字符串的效率高呢?当出现大的数据量的时候很多方法确实都是瓶颈了。