android通过pull方式解析XML(dataset)的过程

   在安卓客户端,通常调用非JAVA开发的webservice,本篇主要阐述调用过.net下C#开发的webservice的处理过程。

     在.net通常返回的是Dataset对象,首先,我们需要在webservice中将dataset对象处理成标准的XML格式,处理过程如下

     

 1  [WebMethod(Description = "获得个人信息")]
 2         public object GetInfoXML(string name,string password)
 3       {
 4               AfarScmBLL.PartnerBll ab = new AfarScmBLL.PartnerBll();
 5             DataSet ds = ab.Get_PartnerInfo("00001", name);
 6            System.Text.StringBuilder strbuilder = new System.Text.StringBuilder();
 7              StringWriter writer = new StringWriter(strbuilder);
 8             ds.WriteXml(writer, System.Data.XmlWriteMode.IgnoreSchema);
 9             return strbuilder.ToString();
10         }

 

       得到的是一串XML的字符串,如下格式有

<NewDataSet> <part> <c_no>1001</c_no> <c_name>金陇副食供应站</c_name> <c_link_tele>15981802704</c_link_tele> <c_link_email>253222680@qq.com</c_link_email> </part> <part> <c_no>1001</c_no> <c_name>金陇副食供应站</c_name> <c_link_tele>15981802704</c_link_tele> </part> </NewDataSet>

        下边就是在安卓下通过PULL方式处理该字符串的过程,具体怎么得到请看上篇安卓调用.netwebservice,返回的为个人信息UserModel的对象

   

 1  public UserModel Getak(String xml)
 2           {
 3               ByteArrayInputStream tInputStringStream = null;
 4               tInputStringStream = new ByteArrayInputStream(xml.getBytes());
 5               XmlPullParser parser = Xml.newPullParser();
 6               try {
 7                    parser.setInput(tInputStringStream,"UTF-8");
 8                    int eventType = parser.getEventType();
 9                    while (eventType != XmlPullParser.END_DOCUMENT)
10                  {
11                       switch (eventType)
12                       {
13                       case XmlPullParser.START_DOCUMENT:
14                          // persons = new ArrayList<Person>();
15                           break;
16                          case XmlPullParser.START_TAG:// 开端元素事务
17                              String name = parser.getName();
18                               if (name.equalsIgnoreCase("c_no"))
19                               {
20                                   pe.setC_no(parser.nextText());
21                                   
22                               }
23                               if (name.equalsIgnoreCase("c_name"))
24                               {
25                                   pe.setC_name(parser.nextText());
26                                 
27                                  
28                              } 
29                               if (name.equalsIgnoreCase("c_link_tele"))
30                               {
31                                  pe.setC_link_tele(parser.nextText());
32                                  
33                                  
34                              } 
35                               if (name.equalsIgnoreCase("c_link_email"))
36                               {
37                                   pe.setC_link_email(parser.nextText());
38                                  
39                                  
40                              } 
41                               break;
42                               case XmlPullParser.END_TAG:// 停止元素事务
43                                   break;
44                                   }
45                       eventType = parser.next();
46                       }
47                   tInputStringStream.close();
48                   } 
49               catch (XmlPullParserException e)
50               {
51                   e.printStackTrace();
52                   } 
53               catch (IOException e)
54               {
55                   e.printStackTrace();
56                   }
57               return pe;
58               }

 

 以上就是完整的处理过程,仅供参考

posted on 2012-06-30 09:11  微雨竹窗夜话..  阅读(476)  评论(0编辑  收藏  举报

导航