none
請問如何可以將整個xml格式的文件利用網路傳到另一端? RRS feed

  • 問題

  • 我想利用xml的方式來交換資料

    我clinet端也適用xml格式傳回server端server端也用xml格式傳回到client

    不知有什麼方便的方式可達到

    謝謝

    2006年4月6日 上午 01:39

解答

  •  

    請參考以下範例

     //Client端使用Javascript,利用xmlhttp以post方式送出xml
     var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
     xmlhttp.onreadystatechange=function(){fnCallBack(xmlhttp);};
     xmlhttp.Open("POST","http://xxx.xx.xx.xx/xxx.aspx?ID=xxx",true);
     xmlhttp.Send(("<?xml version='1.0' encoding='utf-8'?><root><xxx>this is a test</xxx></root>");

      //Client接收Server端回傳的xml
     function fnCallBack(xmlhttp){ 

        if (xmlhttp.readyState==4){
           var objXML = new ActiveXObject('Microsoft.XMLDOM');
           objXML.loadXML(xmlhttp.responseText);
           if (objXML.parseError.errorCode != 0)
           {
               alert(objXML.parseError.reason);
               alert(objXML.parseError.srcText);
           }
           else
           {
               //開始處理XML內容......
           }
         }
      } 
       //Server接收Client XML
       //相關Namespace請自行引用
     
        Response.ContentType = "text/xml";
        Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
        StreamReader sr = new StreamReader(Request.InputStream, encode );
     
        Char[] read = new Char[1024];
        int count = sr.Read( read, 0, 1024 );
        String str = null;
        String sXML = null;
        sXML = "";
     
        while (count > 0)
        {
          str = new String(read, 0, count);
          sXML = sXML + str;
          count = sr.Read(read, 0, 1024);
        }
       
         System.Xml.XmlDocument xmldoc = new XmlDocument();
         xmldoc.LoadXml(sXML);
         string strT = xmldoc.SelectSingleNode("//xxx").InnerText.Trim();
         Response.Write("<?xml version='1.0' encoding='utf-8'?>");
         Response.Write("<root>");
         Response.Write("<xxx>" + strT + </xxx>");
         Response.Write("</root>");
     
     
    Microsoft Tech Support Center
    Bon
        
    2006年4月6日 上午 02:21

所有回覆

  • Dear Thintsung:

    這個方法有很多,Web Service,ASP.NET,Remoting,甚至Socket都可以達到你的要求。我只知道你的架構是Client Server,能不能有進一步的說明,大家也比較好討論。

    2006年4月6日 上午 01:45
  •  

    請參考以下範例

     //Client端使用Javascript,利用xmlhttp以post方式送出xml
     var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
     xmlhttp.onreadystatechange=function(){fnCallBack(xmlhttp);};
     xmlhttp.Open("POST","http://xxx.xx.xx.xx/xxx.aspx?ID=xxx",true);
     xmlhttp.Send(("<?xml version='1.0' encoding='utf-8'?><root><xxx>this is a test</xxx></root>");

      //Client接收Server端回傳的xml
     function fnCallBack(xmlhttp){ 

        if (xmlhttp.readyState==4){
           var objXML = new ActiveXObject('Microsoft.XMLDOM');
           objXML.loadXML(xmlhttp.responseText);
           if (objXML.parseError.errorCode != 0)
           {
               alert(objXML.parseError.reason);
               alert(objXML.parseError.srcText);
           }
           else
           {
               //開始處理XML內容......
           }
         }
      } 
       //Server接收Client XML
       //相關Namespace請自行引用
     
        Response.ContentType = "text/xml";
        Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
        StreamReader sr = new StreamReader(Request.InputStream, encode );
     
        Char[] read = new Char[1024];
        int count = sr.Read( read, 0, 1024 );
        String str = null;
        String sXML = null;
        sXML = "";
     
        while (count > 0)
        {
          str = new String(read, 0, count);
          sXML = sXML + str;
          count = sr.Read(read, 0, 1024);
        }
       
         System.Xml.XmlDocument xmldoc = new XmlDocument();
         xmldoc.LoadXml(sXML);
         string strT = xmldoc.SelectSingleNode("//xxx").InnerText.Trim();
         Response.Write("<?xml version='1.0' encoding='utf-8'?>");
         Response.Write("<root>");
         Response.Write("<xxx>" + strT + </xxx>");
         Response.Write("</root>");
     
     
    Microsoft Tech Support Center
    Bon
        
    2006年4月6日 上午 02:21
  • 請問如果是跨網域的情況,xmlhttp.Open("POST","http://xxx.xx.xx.xx/xxx.aspx?ID=xxx",true);會出現沒有使用權限的問題

    該怎麼排除呢?謝謝!

    2007年3月5日 上午 09:46
  • 2007年3月5日 上午 11:25
    版主