正在用一个做一个C# Winform的程序,需要连接一个短信接口,提交短信以后需要读取返回的状态值,返回的结果是XML,但是通过DataSet ReadXml方法读取XML后某节点就消失了 …… 下面是返回的XML文件,这个是通过浏览器显示的:    <?xml version="1.0" encoding="gb2312" ?> 
  <sms>
  <status>0</status> 
  <sms>6</sms> 
  <mms>0</mms> 
  </sms>DataSet ds = new DataSet();
HttpWebRequest request = HttpWebRequest.Create(Url) as HttpWebRequest;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
ds.ReadXml(response.GetResponseStream(), System.Data.XmlReadMode.Auto);ds读取到的只有 status 和 mms 我想是因为根节点sms和里面的子节点名字sms 导致读取的时候出问题了,不知道是不是 ……

解决方案 »

  1.   

    通过下面的方法可以获取了,但是感觉是返回的XML有问题 : HttpWebRequest request = HttpWebRequest.Create(Url) as HttpWebRequest;
                    HttpWebResponse response = (HttpWebResponse)request.GetResponse();                Stream respStream = response.GetResponseStream();
                    StreamReader respStreamReader = new StreamReader(respStream);
                    XmlDocument xml = new XmlDocument();                xml.LoadXml(respStreamReader.ReadToEnd());                MessageBox.Show(xml.SelectSingleNode("/sms/sms").InnerText);
      

  2.   

    本帖最后由 net_lover 于 2012-06-28 12:52:36 编辑
      

  3.   

    我想确认一下返回的XML到底规范不?为何获取不到 子节点sms呢?
      

  4.   

    改成不一样的名字是可以的,
    如<data>
      <status>0</status> 
      <sms>6</sms> 
      <mms>0</mms> 
    </data>
    这样可以直接读取
      

  5.   

    就xml本身来说,返回的什么格式都可以,但DataSet读取的话是有要求的
      

  6.   

    对啊,本来希望提供接口的技术人员规范一下写法,改个名字什么的,可以正常读取,结果他们让我重新学习XML的规范,郁闷坏了,用户体验啊^
      

  7.   

    如果数据少,不用DataSet,使用XmlDocument就可以
      

  8.   

    有木有更好的办法呢?如果要使用DATASET读取,并且那边坚持不肯修改怎么办呢?