uwp客户端使用webservice返回ArrayOfXElement数据处理方法

uwp客户端使用webservice返回ArrayOfXElement格式,这个格式大概是这个样子

<DataSet xmlns="http://tempuri.org/"> 
<xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="NewDataSet"> 
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"> 
<xs:complexType> 
<xs:choice minOccurs="0" maxOccurs="unbounded"> 
<xs:element name="Table"> 
<xs:complexType> 
<xs:sequence> 
<xs:element name="ID" type="xs:int" minOccurs="0"/> 
<xs:element name="classtitle" type="xs:string" minOccurs="0"/> 
<xs:element name="classfile" type="xs:string" minOccurs="0"/> 
<xs:element name="userName" type="xs:string" minOccurs="0"/> 
<xs:element name="note" 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"> 
<NewDataSet xmlns=""> 
<Table diffgr:id="Table1" msdata:rowOrder="0"> 
<ID>26</ID> 
<classtitle>tyu</classtitle> 
<classfile>E:\FTP\web\site\files\课程表uwp\16-11-02</classfile> 
</Table> 
<Table diffgr:id="Table2" msdata:rowOrder="1"> 
<ID>27</ID> 
<classtitle>辽宁工程技术大学机械工程系机械工程16-2班大一上学期课程表</classtitle> 
<classfile>E:\FTP\web\site\files\课程表uwp\16-11-21</classfile> 
</Table> 
<Table diffgr:id="Table3" msdata:rowOrder="2"> 
<ID>28</ID> 
<classtitle>哈哈哈哈</classtitle> 
<classfile> 
C:\Users\Administrator\Desktop\mywebsite\files\课程表uwp\17-02-26 
</classfile> 
</Table> 
<Table diffgr:id="Table4" msdata:rowOrder="3"> 
<ID>29</ID> 
<classtitle>ssz6</classtitle> 
<classfile> 
C:\Users\Administrator\Desktop\mywebsite\files\课程表uwp\17-02-26 
</classfile> 
</Table> 
<Table diffgr:id="Table5" msdata:rowOrder="4"> 
<ID>30</ID> 
<classtitle>aa</classtitle> 
<classfile> 
C:\Users\Administrator\Desktop\mywebsite\files\课程表uwp\17-02-27 
</classfile> 
</Table> 
</NewDataSet> 
</diffgr:diffgram> 
</DataSet> 

首先是一个表头,其次才有内容。

对于这样的格式,返回是xelement的集合,首先获得真正的表的节点。使用Nodes.Descendants("Table"),获得指定标签,然后foreach遍历,具体使用过程看下面。

        private async void FindAll()
        {
            mywebservice.kechengbiaoSoapClient client = new mywebservice.kechengbiaoSoapClient();
            ArrayOfXElement tables = await client.loadallclassAsync();          
            foreach (XElement el in tables.Nodes.Descendants("Table"))
            {
                ClassIndex table = new ClassIndex();
                foreach (XElement ell in el.Nodes())
                {
                  //  table.IndexId = Convert.ToInt32(ell.Value);                   
                    switch (Convert.ToString(ell.Name))
                    {
                        case "ID":
                            table.IndexId = Convert.ToInt32(ell.Value);
                            break;                         
                        case "classtitle":
                            table.IndexTitle = ell.Value;
                            break;
                        default:          
                            break;
                    }
                }
                    data.Add(table);
            }
            listView.DataContext = data;
        }


 至于怎么处理,怎么数据绑定,就在遍历内部处理一下,体验下来,这个Xelememt还是很方便的。需要熟悉,我以前一直用xmlelement,不习惯用Xelement,不过xelement支持linq支持的好一点,微软默认用的Xelement。


作者:songshizhao 发表于:2017-02-28T09:42:52 访问量:1019