关于Xml的序列化和反序列化:

可以看这篇文章,http://www.cnblogs.com/Windows-phone/p/3243575.html

WebService解析返回的数据DataSet

  <?xml version="1.0" encoding="utf-8" ?>
- <DataSet xmlns="http://WebXml.com.cn/">
-   <xs:schema id="getRegion" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-     <xs:element name="getRegion" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
-       <xs:complexType>
-         <xs:choice minOccurs="0" maxOccurs="unbounded">
-           <xs:element name="Province">
-             <xs:complexType>
-               <xs:sequence>
                  <xs:element name="RegionID" type="xs:string" minOccurs="0" />
                  <xs:element name="RegionName" type="xs:string" minOccurs="0" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
-           <xs:element name="Country">
-             <xs:complexType>
-               <xs:sequence>
                  <xs:element name="RegionID" type="xs:string" minOccurs="0" />
                  <xs:element name="RegionName" type="xs:string" minOccurs="0" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:choice>
        </xs:complexType>
      </xs:element>
    </xs:schema>
- <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
-   <getRegion xmlns="">
-     <Province diffgr:id="Province1" msdata:rowOrder="0">
        <RegionID>3113</RegionID>
        <RegionName>黑龙江</RegionName>
      </Province>
-     <Province diffgr:id="Province2" msdata:rowOrder="1">
        <RegionID>3114</RegionID>
        <RegionName>吉林</RegionName>
      </Province>
-     <Province diffgr:id="Province3" msdata:rowOrder="2">
        <RegionID>3115</RegionID>
        <RegionName>辽宁</RegionName>
      </Province>      <Province diffgr:id="Province4" msdata:rowOrder="3">
        <RegionID>3116</RegionID>
        <RegionName>内蒙古</RegionName>
      </Province>
-     <Province diffgr:id="Province5" msdata:rowOrder="4">
        <RegionID>3117</RegionID>
        <RegionName>河北</RegionName>
      </Province>
-     <Province diffgr:id="Province6" msdata:rowOrder="5">
        <RegionID>3118</RegionID>
        <RegionName>河南</RegionName>
      </Province>
-     <Province diffgr:id="Province7" msdata:rowOrder="6">
        <RegionID>3119</RegionID>
        <RegionName>山东</RegionName>
      </Province>
-     .......  </getRegion>... 

在我们获取了这个Xml数据之后,我们如何解析这段数据,并将该数据转换成Province集合呢?
代码如下:

 static string head = "<?xml version=\"1.0\" encoding=\"utf-8\"?><Province>";
        //static string tail = "</{0}>";
        static string tail = "</Province>";
/// <summary>
        /// 获取多个实体对象
        /// </summary>
        /// <typeparam name="T">实体类型</typeparam>
        /// <param name="aoxe"></param>
        /// <returns></returns>
        public static ObservableCollection<T> GetAllEntitiesForDataSetXml<T>(ArrayOfXElement aoxe)
        {
            ObservableCollection<T> listT = new ObservableCollection<T>();
            XmlSerializer serializer = new XmlSerializer(typeof(T));
            T t = default(T);
            try
            {
                ].LastNode));//取出第二个结点中的内容
                StringBuilder sb = new StringBuilder();                                                                                                                

                foreach (var item in content.Nodes())
                {
                    //sb.Append(string.Format(head, typeof(T).Name));
                    sb.Append(head);
                    foreach (var obj in ((XElement)item).Nodes())
                    {

                        sb.Append(obj.ToString());
                    }
                    //sb.Append(string.Format(tail, typeof(T).Name));
                    sb.Append(tail);
                    string ss = sb.ToString();

                    StringReader sr = new StringReader(ss);

                    //反序列化,并将反序列化结果值赋给变量i
                    t = (T)serializer.Deserialize(sr);

                    listT.Add(t);
                    sr.Close();
                    sr.Dispose();
                    sb.Clear();
                }
            }
            catch
            {

            }
            return listT;
        }

Windowsphone 之xml序列化和反序列化的应用(WebService解析返回的数据DataSet )的更多相关文章

  1. XML 序列化与反序列化

    XML序列化与反序列化 1.将一个类转化为XML文件 /// <summary> /// 对象序列化成XML文件 /// </summary> /// <param na ...

  2. XmlSerializer 对象的Xml序列化和反序列化

    http://www.cnblogs.com/yukaizhao/archive/2011/07/22/xml-serialization.html 这篇随笔对应的.Net命名空间是System.Xm ...

  3. C#的XML序列化及反序列化

    webservice在工作中用到的很多,基本都是以XML格式问通讯内容,其中最关键的就是XML串的序列化及反序列化. XML的运用中有两种信息传递,一种为XML的请求信息,另一种为返回信息,要运用XM ...

  4. .NET XML序列化与反序列化

    闲着没事,写了两个通用的XML序列化与反序列化的方法. 贴出来当作笔记吧! /// <summary> /// XML序列化 /// </summary> /// <ty ...

  5. XmlSerializer 对象的Xml序列化和反序列化,XMLROOT别名设置

    这篇随笔对应的.Net命名空间是System.Xml.Serialization:文中的示例代码需要引用这个命名空间.   为什么要做序列化和反序列化? .Net程序执行时,对象都驻留在内存中:内存中 ...

  6. c# XML序列化与反序列化

    c# XML序列化与反序列化 原先一直用BinaryFormatter来序列化挺好,可是最近发现在WinCE下是没有办法进行BinaryFormatter操作,很不爽,只能改成了BinaryWrite ...

  7. Xml序列化、反序列化帮助类

    之前从网络上找了一个Xml处理帮助类,并整理了一下,这个帮助类针对Object类型进行序列化和反序列化,而不需要提前定义Xml的结构,把它放在这儿供以后使用 /// <summary> / ...

  8. Windows phone 之XML序列化与反序列化

    为什么要做序列化和反序列化? 一个回答: 我们都知道对象是不能在网络中直接传输的,不过还有补救的办法.XML(Extensible Markup Language)可扩展标记语言,本身就被设计用来存储 ...

  9. C#操作Xml:XmlSerializer 对象的Xml序列化和反序列化

    这篇随笔对应的.Net命名空间是System.Xml.Serialization:文中的示例代码需要引用这个命名空间. 为什么要做序列化和反序列化? .Net程序执行时,对象都驻留在内存中:内存中的对 ...

随机推荐

  1. bzoj 1069 [SCOI2007]最大土地面积(旋转卡壳)

    1069: [SCOI2007]最大土地面积 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 2277  Solved: 853[Submit][Stat ...

  2. Java程序员25个必备的Eclipse插件

    原文:http://www.fromdev.com/2012/01/25-best-free-eclipse-plug-ins-for-java.html "工欲善其事, 必先利器" ...

  3. 【ImageMagick】Unix Windows 源码安装

    [ Unix 源码安装 | Windows 源码安装 ] 首先检查一下电脑里已经安装的ImageMagick版本,输入:   convert -version 除非你想要把对另外的图像格式的支持或升级 ...

  4. MongoDB 复制集(二) 选举 自动故障切换

    一   复制集的高可用性简介       复制集通过故障自动切换来实现高可用性,当主节点出现故障的时候,从节点可以通过选举成为主节点,而这个过程在大多数当情况下是自动进行的,不需要手动干预.在某些情况 ...

  5. jdk的动态代理

    至于jdk的动态代理怎么用此处并不多说,现在是更深一步的理解,jdk的Proxy类到底做了什么. Proxy.newProxyInstance可以生成代理类,此方法有三个参数(ClassLoader ...

  6. Bootstrap-基于jquery的bootstrap在线文本编辑器插件Summernote

    Summernote是一个基于jquery的bootstrap超级简单WYSIWYG在线编辑器.Summernote非常的轻量级,大小只有30KB,支持Safari,Chrome,Firefox.Op ...

  7. asp.net中利用session对象传递、共享数据[session用法]

    下面介绍Asp.net中利用session对象传递.共享数据用法: 1.传递值: 首先定义将一个文本值或单独一个值赋予session,如下: session[“name”]=textbox1.text ...

  8. CFileDialog的使用方法简单介绍

    CFileDialog文件选择对话框的使用:首先构造一个对象并提供对应的參数,构造函数原型例如以下: CFileDialog::CFileDialog( BOOL bOpenFileDialog, L ...

  9. GDB的non-stop模式

    线程调试必杀技 - GDB的non-stop模式   作者:破砂锅 开源的GDB被广泛使用在Linux.OSX.Unix和各种嵌入式系统(例如手机),这次它又带给我们一个惊喜. 多线程调试之痛 调试器 ...

  10. 关于json中对象的删除

    一个json对象在后台产生了,但是有些数据可能无效或者不合法,所以需要在前台作些例外处理,比如删除掉. json的删除有很多种,直接用过 delete json对象方式. 举例如下 Js代码 var ...