Windows Phone 8 ——Webservice返回Dataset处理方法

客户端程序接到返回的DataSet内容是如下的形式:

 1   [0]: <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
 2   <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
 3     <xs:complexType>
 4       <xs:choice minOccurs="0" maxOccurs="unbounded">
 5         <xs:element name="Table1">
 6           <xs:complexType>
 7             <xs:sequence>
 8               <xs:element name="Login_ID" type="xs:string" minOccurs="0" />
 9               <xs:element name="UserName" type="xs:string" minOccurs="0" />
10               <xs:element name="UserGender" type="xs:boolean" minOccurs="0" />
11               <xs:element name="UserTEL" type="xs:string" minOccurs="0" />
12               <xs:element name="Login_PWD" type="xs:string" minOccurs="0" />
13             </xs:sequence>
14           </xs:complexType>
15         </xs:element>
16       </xs:choice>
17     </xs:complexType>
18   </xs:element>
19 </xs:schema>
20     [1]: <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
21   <NewDataSet xmlns="">
22     <Table1 diffgr:id="Table11" msdata:rowOrder="0">
23       <Login_ID>daitou</Login_ID>
24       <UserName>zy</UserName>
25       <Login_PWD>2</Login_PWD>
26     </Table1>
27     <Table1 diffgr:id="Table12" msdata:rowOrder="1">
28       <Login_ID>kwan</Login_ID>
29       <UserName>gkh</UserName>
30       <Login_PWD>1</Login_PWD>
31     </Table1>
32   </NewDataSet>
33 </diffgr:diffgram>

 

整个内容有两个元素:schema和diffgr

——————以上内容接收和解析方法

 1 private void Button_Click_1(object sender, RoutedEventArgs e)
 2         {
 3             string name = txtUserName.Text.Trim();
 4             string pwd = pbPwd.Password;
 5             if (name != "" && pwd != "")
 6             {
 7                 ServiceReference1.WebServiceSoapClient ws = new ServiceReference1.WebServiceSoapClient();
 8                 ws.LoginCompleted += new EventHandler<ServiceReference1.LoginCompletedEventArgs>(ws_LoginCompleted);
 9                 ws.LoginAsync(name, pwd);
10             }
11             else MessageBox.Show("请正确输入用户名或密码");
12 
13         }
14         void ws_LoginCompleted(object sender, ServiceReference1.LoginCompletedEventArgs e)
15         {
16             if (e.Error == null)
17             {
18                 IEnumerable<XElement> iexe = e.Result.Nodes[1].Descendants("Table1");
19                 if (iexe.Count() > 0)
20                 {
21                     string currName = txtUserName.Text.Trim();
22                     string currPwd = pbPwd.Password;
23 
24                     foreach (var item in iexe)
25                     {
26                         if (item.Element("Login_ID").Value==currName &&  item.Element("Login_PWD").Value==currPwd )
27                         {
28                             this.NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
29                         }
30                         
31                     }
32                 }
33                 else MessageBox.Show("用户名或密码错误");
34 
35             }
36             else MessageBox.Show("登录失败……");
37 
38         }

 

注:要想使用XELEMENT需要引用using System.Xml.Linq;

  用IIS发布webservice

  添加服务引用时通过输入服务asmx地址来添加,最好从ie地址栏复制来asmx的地址,并把localhost改为局域网内的ip即可在真机调试

posted @ 2013-03-23 19:03  关健  阅读(458)  评论(0编辑  收藏  举报