高分求解析xml文档程序,文档地址是“http://isurvey.ipsos.com.cn/cor_web/point/index.asp?web=ipsos&project=网络使用习惯调查&got=a”,需要用一段C#程序解析这个网址下的XML文档。

解决方案 »

  1.   

    无法显示 XML 页。 
    使用 XSL 样式表无法查看 XML 输入。请更正错误然后单击 刷新按钮,或以后重试。 
    --------------------------------------------------------------------------------文本内容中发现无效字符。处理资源 'http://isurvey.ipsos.com.cn/cor_web/point/index.asp?web=ipsos&project=网络使用习惯调查&got=a' 时出错。第 5 行,位置: 64 <who id="85772" username="5271" hezuoid="" PID="070367" pname="
      

  2.   

    你是怎么处理的呢?
    我的代码这样写的:
     DataSet ds = new DataSet();
            XmlTextReader rd = new XmlTextReader("http://isurvey.ipsos.com.cn/cor_web/point/index.asp?web=ipsos&project=网络使用习惯调查&got=a");
            ds.ReadXml(rd);
    我处理时它报的异常信息是“缺少根元素”,不知道是怎么回事!
      

  3.   

    缺少根元素我也遇到过,而且跟你通过页面取数据的方式一样,问题存在于你读取的是网页的源文件,里面可能存在空格.你可以切掉得到内容前面的空格或其它字符,然后再用Reader来读取
      

  4.   

    string URL = "http://isurvey.ipsos.com.cn/cor_web/point/index.asp?..."; Response.Write("URL="+URL+"<br />");
    Response.Write("<hr><br>\n");
    string result = "";
    try
    {
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(URL);
    req.Method = "GET";
    HttpWebResponse rsp = (HttpWebResponse)req.GetResponse();
    StreamReader rst = new StreamReader(rsp.GetResponseStream());
    result = rst.ReadToEnd();
    }
    catch(Exception ex)
    {
    Response.Write("Errors: "+ex.Message+"<br><br>");
    Response.Write("<hr><br>\n");
    Response.End();
    }
    Response.Write("result - "+result);
    Response.Write("<hr><br>\n");
      

  5.   

    步骤1:
    先获取XML源文件,然后读取
      

  6.   

    mqcan(小强<带头小弟>) 
    -----------------------
    你的那个方法我试了下,速度很慢,最终中止线程了,不过我觉得方法应该是对的,但这样做还是不能达到效果阿
      

  7.   

    yuchangmao(学习孟子)
    --------------------- 
    缺少根元素我也遇到过,而且跟你通过页面取数据的方式一样,问题存在于你读取的是网页的源文件,里面可能存在空格.你可以切掉得到内容前面的空格或其它字符,然后再用Reader来读取
    ---------------------------------------------------------------------------------
    我觉得也是这样,但我不知道怎么去掉该去的空格,你能贴下你以前的解决方法吗?
      

  8.   

    不能那样吧,xml文档中元素的属性和属性之间也有空格的
      

  9.   

    “http://isurvey.ipsos.com.cn/cor_web/point/index.asp?web=ipsos&project=网络使用习惯调查&got=a”,这个才是全部网址,后边的中文没看到吧,呵呵!
      

  10.   

    string URL = "http://isurvey.ipsos.com.cn/cor_web/point/index.asp?..."; Response.Write("URL="+URL+"<br />");
    Response.Write("<hr><br>\n");
    string result = "";
    try
    {
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(URL);
    req.Method = "GET";
    HttpWebResponse rsp = (HttpWebResponse)req.GetResponse();
    StreamReader rst = new StreamReader(rsp.GetResponseStream());
    result = rst.ReadToEnd();
    }
    catch(Exception ex)
    {
    Response.Write("Errors: "+ex.Message+"<br><br>");
    Response.Write("<hr><br>\n");
    Response.End();
    }
    Response.Write("result - "+result);
    Response.Write("<hr><br>\n");
    ----------------------------------------------------------------------
    这种写法运行的结果是“result -”,好像没有取到值。 UP!
      

  11.   

    java 的思路
    1、获取输入流
    2、保存为临时文件(xml)
    3、dom4j解析数据,获取所需数据
    ok,完工
      

  12.   

    问题解决了,用了很傻的方法,先用asp将读取该文档,方法如下:<%
    url="http://isurvey.ipsos.com.cn/cor_web/point/index.asp?web=ipsos&project=网络使用习惯调查&got=a"rem 建立一个xmlhttp的对象,实现url的发送。
    Set http=Server.CreateObject("Microsoft.XMLHTTP")
    http.Open "GET",url,False
    http.sendrem 建立一个xml解析程序的对象,然后接受。
    Set xml=Server.CreateObject("Microsoft.XMLDOM")
    xml.Async=true
    xml.ValidateOnParse=False
    xml.Load(http.ResponseXML)rem 这里只是读取每一个节点的名字
    If xml.ReadyState>2 Then
      
      if xml.parseError.errorCode <> 0 then
       response.write "错误:读取数据失败"
         response.write xml.parseerror.errorcode
        response.write xml.parseerror.reason
         xml.loadxml(myxmlstr)
       response.End()
     else
      end if
      
      set objnode=xml.documentElement
      
      rem 这里开始读取每个节点的属性值,你接受到这个的时候不能直接入库,还要写一个入库的函数,对你想要入库的值进行入库,记住不是所有的值。
      rem 更节点
      response.Write  "<?xml version=""1.0"" encoding=""gb2312"" ?>"
      response.Write "<user>"
      uidlength=objnode.ChildNodes.length-1  for i=0 to uidlength
      set objatr=objnode.childnodes.item(i)
      objatr1=objatr.attributes.length-1  response.Write "<who "
      for j=0 to objatr1  response.Write objatr.attributes.item(j).name
      response.Write "="
      response.Write """"  response.Write objatr.attributes.item(j).text 
      response.Write """"
      response.Write " "  next
      response.Write "></who>"
      next
      response.Write "</user>"Else
    End If
    Set http=Nothing
    Set xml=Nothing
    %>
      

  13.   

    然后,用C#程序来读取生成的页面内容,方法如下:
    private DataSet GetDataSet(string url)
        {    DataSet ds = new DataSet();
            XmlTextReader myReader = new XmlTextReader(url);
            ds.ReadXml(myReader);
            return ds;
        }
    然后内容就存储在ds中了