Windows 10开发基础——XML和JSON (二)
主要内容:
- Linq to XML
- Newtonsoft.Json.Linq来解析JSON
- 博客园RSS(http://www.cnblogs.com/rss)的解析
- UWP调用自己实现的Web API
1.Linq to XML
Linq to XML不是一个新鲜的话题了,网上以及各种资料对这个介绍都比较多。今天就简单了解下,不做深入的研究。。。在代码中生成XML文档,使用Linq to XML会比Windows.Data.Xml.Dom命名空间下的类简单,使用起来也更加灵活。Linq to XML是对Linq表达式的扩展,我们也可以在处理XML时用上Linq语句。
先直接上一段代码:
- XDocument xdoc = new XDocument(new XDeclaration("1.0", "utf-8", null));
- XElement root = new XElement("students",
- new XElement("student", new XAttribute("id", ""), new XAttribute("name", "czh"), new XAttribute("age", )),
- new XElement("student", new XAttribute("id", ""), new XAttribute("name", "dyq"), new XAttribute("age", )),
- new XElement("student", new XAttribute("id", ""), new XAttribute("name", "wxk"), new XAttribute("age", )),
- new XElement("student", new XAttribute("id", ""), new XAttribute("name", "cmf"), new XAttribute("age", )));
- xdoc.Add(root);
- textBlock.Text= xdoc.ToString();
首先我们创建了一个XDocument对象,代表整个XML文档,在创建这个对象时,我们传入了一个XDeclaration对象,这个对象声明了xml的基本信息(<?xml version="1.0" encoding="utf-8"?>)。XElement对象则对应着一个个的XML标签元素,XAttribute则对应这些元素里的属性。这段代码里面,root对应着<studens>标签,然后创建root时,我们传入了多个XElement对象,这些对象对应着<students>里面的<student>标签,然后把root添加到xdoc中,这样一个XML文档就创建完成了。对比上面的代码和下面生成的XML看一下咯。
- <?xml version="1.0"?>
- <students>
- <student age="18" name="czh" id="201313138063"/>
- <student age="19" name="dyq" id="201313138064"/>
- <student age="22" name="wxk" id="201313138065"/>
- <student age="20" name="cmf" id="201313138069"/>
- </students>
接着,我们把上面的XML转化为对象列表,用列表控件进行显示:
- XDocument xdoc = XDocument.Parse(textBlock.Text);
- XElement root= xdoc.Root;
- var students = from student in root.Elements("student")
- select new
- {
- SId=(string)student.Attribute("id"),
- SName= (string)student.Attribute("name"),
- SAge = (int)student.Attribute("age")
- };
- listView.ItemsSource = students;
在这里我们用到了Linq中的select语句,将root(对应于students)中的所有student元素转换成了匿名对象,这个匿名对象有SId、SName、SAge三个属性,然后将这些匿名对象组成的students(类型为IEnumerable<T>)绑定到ListView控件上显示:
2.Newtonsoft.Json.Linq来解析JSON
Newtonsoft.Json.Linq是一个比较火的第三方JSON解析库,我们来简单使用下。。。在建好的项目上右击“引用”节点,选择“管理Nuget包”,然后在搜索栏里面输入“Newtonsoft”,选择第一个,点安装就是了。我们要解析JSON数据来源于中国和世界天气全能版(http://apistore.baidu.com/apiworks/servicedetail/478.html)
这个第三方库使用起来还是比较方便的,我们主要用到了JObject、JToken、JArray三个类,直接贴代码。
前台xaml:
- <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
- <Grid.RowDefinitions>
- <RowDefinition Height="50"></RowDefinition>
- <RowDefinition></RowDefinition>
- <RowDefinition></RowDefinition>
- <RowDefinition></RowDefinition>
- </Grid.RowDefinitions>
- <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
- <TextBox x:Name="tbCity" Margin="10,10,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="235"/>
- <Button x:Name="btnSearch" Content="Search" HorizontalAlignment="Center" Margin="20,10,0,0" VerticalAlignment="Top" Click="btnSearch_Click"/>
- </StackPanel>
- <Grid Visibility="Collapsed" HorizontalAlignment="Center" Grid.Row="1" x:Name="now_grid">
- <Grid.RowDefinitions>
- <RowDefinition></RowDefinition>
- <RowDefinition></RowDefinition>
- <RowDefinition></RowDefinition>
- <RowDefinition></RowDefinition>
- <RowDefinition></RowDefinition>
- <RowDefinition></RowDefinition>
- <RowDefinition></RowDefinition>
- <RowDefinition></RowDefinition>
- <RowDefinition></RowDefinition>
- </Grid.RowDefinitions>
- <Grid.ColumnDefinitions>
- <ColumnDefinition></ColumnDefinition>
- <ColumnDefinition></ColumnDefinition>
- </Grid.ColumnDefinitions>
- <TextBlock Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Text="当前天气状况"></TextBlock>
- <TextBlock Grid.Row="1" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Text="当前温度(C)"></TextBlock>
- <TextBlock Grid.Row="2" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Text="相对湿度(%)"></TextBlock>
- <TextBlock Grid.Row="3" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Text="能见度(km)"></TextBlock>
- <TextBlock Grid.Row="4" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Text="空气质量指数"></TextBlock>
- <TextBlock Grid.Row="5" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Text="PM2.5(ug/m³)"></TextBlock>
- <TextBlock Grid.Row="6" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Text="空气质量类别"></TextBlock>
- <TextBlock Grid.Row="7" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Text="风向"></TextBlock>
- <TextBlock Grid.Row="8" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Text="风力"></TextBlock>
- <TextBlock Margin="12,0,0,0" Grid.Row="0" Grid.Column="1" Text="{Binding Txt}"></TextBlock>
- <TextBlock Margin="12,0,0,0" Grid.Row="1" Grid.Column="1" Text="{Binding Tmp}"></TextBlock>
- <TextBlock Margin="12,0,0,0" Grid.Row="2" Grid.Column="1" Text="{Binding Hum}"></TextBlock>
- <TextBlock Margin="12,0,0,0" Grid.Row="3" Grid.Column="1" Text="{Binding Vis}"></TextBlock>
- <TextBlock Margin="12,0,0,0" Grid.Row="4" Grid.Column="1" Text="{Binding Aqi}"></TextBlock>
- <TextBlock Margin="12,0,0,0" Grid.Row="5" Grid.Column="1" Text="{Binding Pm25}"></TextBlock>
- <TextBlock Margin="12,0,0,0" Grid.Row="6" Grid.Column="1" Text="{Binding Qlty}"></TextBlock>
- <TextBlock Margin="12,0,0,0" Grid.Row="7" Grid.Column="1" Text="{Binding Winddir}"></TextBlock>
- <TextBlock Margin="12,0,0,0" Grid.Row="8" Grid.Column="1" Text="{Binding Windsc}"></TextBlock>
- </Grid>
- <FlipView Visibility="Collapsed" x:Name="fv" Grid.Row="2">
- <FlipView.ItemTemplate>
- <DataTemplate>
- <Grid>
- <Grid.RowDefinitions>
- <RowDefinition Height="2*"></RowDefinition>
- <RowDefinition Height="5*"></RowDefinition>
- <RowDefinition Height="2*"></RowDefinition>
- </Grid.RowDefinitions>
- <StackPanel Orientation="Vertical">
- <TextBlock Text="{Binding Date}" HorizontalAlignment="Center"></TextBlock>
- <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
- <TextBlock Margin="48,0,0,0" Text="日出时间:"></TextBlock>
- <TextBlock Margin="12,0,0,0" Text="{Binding Astrosr}"></TextBlock>
- <TextBlock Margin="24,0,0,0" Text="日出时间:"></TextBlock>
- <TextBlock Margin="12,0,0,0" Text="{Binding Astross}"></TextBlock>
- </StackPanel>
- </StackPanel>
- <Grid Grid.Row="1" VerticalAlignment="Center" HorizontalAlignment="Center">
- <Grid.RowDefinitions>
- <RowDefinition></RowDefinition>
- <RowDefinition></RowDefinition>
- <RowDefinition></RowDefinition>
- <RowDefinition></RowDefinition>
- </Grid.RowDefinitions>
- <Grid.ColumnDefinitions>
- <ColumnDefinition></ColumnDefinition>
- <ColumnDefinition></ColumnDefinition>
- </Grid.ColumnDefinitions>
- <TextBlock Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Text="相对湿度(%)"></TextBlock>
- <TextBlock Grid.Row="1" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="0" Text="降水概率"></TextBlock>
- <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Hum}"></TextBlock>
- <TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding Pop}"></TextBlock>
- <StackPanel Orientation="Horizontal" Grid.Row="2" Grid.ColumnSpan="2">
- <TextBlock Margin="36,4,0,0" Text="最高温度(C):"></TextBlock>
- <TextBlock Margin="12,4,0,0" Text="{Binding Tmpmax}"></TextBlock>
- <TextBlock Margin="24,4,0,0" Text="最低温度(C):"></TextBlock>
- <TextBlock Margin="12,4,0,0" Text="{Binding Tmpmin}"></TextBlock>
- </StackPanel>
- <StackPanel Orientation="Horizontal" Grid.Row="3" Grid.ColumnSpan="2">
- <TextBlock Margin="24,4,0,0" Text="白天天气状况:"></TextBlock>
- <TextBlock Margin="12,4,0,0" Text="{Binding Txt_d}"></TextBlock>
- <TextBlock Margin="24,4,0,0" Text="夜晚天气状况:"></TextBlock>
- <TextBlock Margin="12,4,0,0" Text="{Binding Txt_n}"></TextBlock>
- </StackPanel>
- </Grid>
- <StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
- <TextBlock Margin="48,0,0,0" Text="风向:"></TextBlock>
- <TextBlock Margin="12,0,0,0" Text="{Binding Winddir}"></TextBlock>
- <TextBlock Margin="24,0,0,0" Text="风力:"></TextBlock>
- <TextBlock Margin="12,0,0,0" Text="{Binding Windsc}"></TextBlock>
- </StackPanel>
- </Grid>
- </DataTemplate>
- </FlipView.ItemTemplate>
- </FlipView>
- <Grid x:Name="sugestion_grid" Visibility="Collapsed" Grid.Row="3" Margin="12">
- <Grid.RowDefinitions>
- <RowDefinition Height="2*"></RowDefinition>
- <RowDefinition Height="2*"></RowDefinition>
- </Grid.RowDefinitions>
- <Grid.ColumnDefinitions>
- <ColumnDefinition></ColumnDefinition>
- <ColumnDefinition></ColumnDefinition>
- </Grid.ColumnDefinitions>
- <Grid Margin="8" Grid.Row="0" Grid.Column="0">
- <Grid.RowDefinitions>
- <RowDefinition Height="auto"></RowDefinition>
- <RowDefinition Height="auto"></RowDefinition>
- <RowDefinition Height="auto"></RowDefinition>
- </Grid.RowDefinitions>
- <TextBlock Text="舒适度指数:"></TextBlock>
- <TextBlock Grid.Row="1" Text="{Binding Comfbrf}"></TextBlock>
- <TextBlock Grid.Row="2" Text="{Binding Comftxt}" TextWrapping="Wrap"></TextBlock>
- </Grid>
- <Grid Margin="8" Grid.Row="0" Grid.Column="1">
- <Grid.RowDefinitions>
- <RowDefinition Height="auto"></RowDefinition>
- <RowDefinition Height="auto"></RowDefinition>
- <RowDefinition Height="auto"></RowDefinition>
- </Grid.RowDefinitions>
- <TextBlock Text="穿衣指数:"></TextBlock>
- <TextBlock Grid.Row="1" Text="{Binding Drsgbrf}"></TextBlock>
- <TextBlock Grid.Row="2" Text="{Binding Drsgtxt}" TextWrapping="Wrap"></TextBlock>
- </Grid>
- <Grid Margin="8" Grid.Row="1" Grid.Column="0">
- <Grid.RowDefinitions>
- <RowDefinition Height="auto"></RowDefinition>
- <RowDefinition Height="auto"></RowDefinition>
- <RowDefinition Height="auto"></RowDefinition>
- </Grid.RowDefinitions>
- <TextBlock Text="感冒指数:"></TextBlock>
- <TextBlock Grid.Row="1" Text="{Binding Flubrf}"></TextBlock>
- <TextBlock Grid.Row="2" Text="{Binding Flutxt}" TextWrapping="Wrap"></TextBlock>
- </Grid>
- <Grid Margin="8" Grid.Row="1" Grid.Column="1">
- <Grid.RowDefinitions>
- <RowDefinition Height="auto"></RowDefinition>
- <RowDefinition Height="auto"></RowDefinition>
- <RowDefinition Height="auto"></RowDefinition>
- </Grid.RowDefinitions>
- <TextBlock Text="运动指数:"></TextBlock>
- <TextBlock Grid.Row="1" Text="{Binding Sportbrf}"></TextBlock>
- <TextBlock Grid.Row="2" Text="{Binding Sporttxt}" TextWrapping="Wrap"></TextBlock>
- </Grid>
- </Grid>
- </Grid>
后台代码:
- private async void btnSearch_Click(object sender, RoutedEventArgs e)
- {
- HttpClient httpClient = new HttpClient();
- httpClient.DefaultRequestHeaders.Add("apikey", "你的apikey");
- string url = "http://apis.baidu.com/heweather/pro/weather?city=" + tbCity.Text;
- HttpResponseMessage response = await httpClient.GetAsync(new Uri(url));
- response.EnsureSuccessStatusCode();
- string result = await response.Content.ReadAsStringAsync();
- DeserilizeJson(result);
- }
- private void DeserilizeJson(string result)
- {
- JObject jsonobj = JObject.Parse(result);
- JArray jsonarry = JArray.Parse(jsonobj["HeWeather data service 3.0"].ToString());
- WeathernowData(jsonarry);
- DailyforecastData(jsonarry);
- SuggestionsData(jsonarry);
- }
- private void WeathernowData(JArray jsonarry)
- {
- Weathernow now = new Weathernow();
- JToken weather = jsonarry[]["now"];
- now.Txt = weather["cond"]["txt"].ToString();
- now.Tmp = weather["tmp"].ToString();
- now.Aqi = jsonarry[]["aqi"]["city"]["aqi"].ToString();
- now.Pm25 = jsonarry[]["aqi"]["city"]["pm25"].ToString();
- now.Qlty = jsonarry[]["aqi"]["city"]["qlty"].ToString();
- now.Hum = weather["hum"].ToString();
- now.Vis= weather["vis"].ToString();
- now.Winddir= weather["wind"]["dir"].ToString();
- now.Windsc= weather["wind"]["sc"].ToString();
- if (now_grid.Visibility == Visibility.Collapsed)
- now_grid.Visibility = Visibility.Visible;
- now_grid.DataContext = now;
- }
- private void DailyforecastData(JArray jsonarry)
- {
- List<Dailyforecast> dailyList = new List<Dailyforecast>();
- JArray daily_forecast =JArray.Parse( jsonarry[]["daily_forecast"].ToString());
- for (int i = ; i < daily_forecast.Count; i++)
- {
- dailyList.Add(new Dailyforecast() {
- Date = daily_forecast[i]["date"].ToString() ,
- Astrosr=daily_forecast[]["astro"]["sr"].ToString(),
- Astross= daily_forecast[]["astro"]["ss"].ToString(),
- Hum = daily_forecast[i]["hum"].ToString(),
- Pop= daily_forecast[i]["pop"].ToString(),
- Tmpmax = daily_forecast[i]["tmp"]["max"].ToString(),
- Tmpmin = daily_forecast[i]["tmp"]["min"].ToString(),
- Txt_d = daily_forecast[i]["cond"]["txt_d"].ToString(),
- Txt_n = daily_forecast[i]["cond"]["txt_n"].ToString(),
- Winddir = daily_forecast[i]["wind"]["dir"].ToString(),
- Windsc = daily_forecast[i]["wind"]["sc"].ToString()
- });
- }
- if (fv.Visibility == Visibility.Collapsed)
- fv.Visibility = Visibility.Visible;
- fv.ItemsSource = dailyList;
- }
- private void SuggestionsData(JArray jsonarry)
- {
- Suggestions suggestions = new Suggestions();
- JToken suggestion = jsonarry[]["suggestion"];
- suggestions.Comfbrf = suggestion["comf"]["brf"].ToString();
- suggestions.Comftxt = suggestion["comf"]["txt"].ToString();
- suggestions.Drsgbrf = suggestion["drsg"]["brf"].ToString();
- suggestions.Drsgtxt = suggestion["drsg"]["txt"].ToString();
- suggestions.Flubrf = suggestion["flu"]["brf"].ToString();
- suggestions.Flutxt = suggestion["flu"]["txt"].ToString();
- suggestions.Sportbrf = suggestion["sport"]["brf"].ToString();
- suggestions.Sporttxt = suggestion["sport"]["txt"].ToString();
- if (sugestion_grid.Visibility == Visibility.Collapsed)
- sugestion_grid.Visibility = Visibility.Visible;
- sugestion_grid.DataContext = suggestions;
- }
Weathernow.cs:
- /*
- "txt": "晴" //天气状况描述
- "tmp": "32", //温度
- "hum": "20%", //相对湿度(%)
- "vis": "10", //能见度(km)
- "aqi": "30", //空气质量指数
- "pm25": "7", //PM2.5 1小时平均值(ug/m³)
- "qlty": "优", //空气质量类别
- "winddir": "北风", //风向
- "windsc": "3级", //风力
- */
- public class Weathernow
- {
- public string Txt { get; set; }
- public string Tmp { get; set; }
- public string Hum { get; set; }
- public string Vis { get; set; }
- public string Aqi { get; set; }
- public string Pm25 { get; set; }
- public string Qlty { get; set; }
- public string Winddir { get; set; }
- public string Windsc { get; set; }
- }
Suggestions.cs:
- /*
- //舒适度指数
- "comfbrf": "较不舒适", //简介
- "comftxt": "白天天气多云,同时会感到有些热,不很舒适。" //详细描述
- //穿衣指数
- "drsgbrf": "炎热",
- "drsgtxt": "天气炎热,建议着短衫、短裙、短裤、薄型T恤衫等清凉夏季服装。"
- //感冒指数
- "flubrf": "少发",
- "flutxt": "各项气象条件适宜,发生感冒机率较低。但请避免长期处于空调房间中,以防感冒。"
- //运动指数
- "sportbrf": "较适宜",
- "sporttxt": "天气较好,户外运动请注意防晒。推荐您进行室内运动。"
- //紫外线指数
- "uvbrf": "中等",
- "uvtxt": "属中等强度紫外线辐射天气,外出时建议涂擦SPF高于15、PA+的防晒护肤品,戴帽子、太阳镜。"
- */
- public class Suggestions
- {
- public string Comfbrf { get; set; }
- public string Comftxt { get; set; }
- public string Drsgbrf { get; set; }
- public string Drsgtxt { get; set; }
- public string Flubrf { get; set; }
- public string Flutxt { get; set; }
- public string Sportbrf { get; set; }
- public string Sporttxt { get; set; }
- }
Dailyforecast.cs:
- /*
- "date": "2015-07-02", //预报日期
- "astrosr": "04:50", //日出时间
- "astross": "19:47" //日落时间
- "txt_d": "晴", //白天天气状况描述
- "txt_n": "晴" //夜间天气状况描述
- "hum": "14", //相对湿度(%)
- "pop": "0", //降水概率
- "tmpmax": "34", //最高温度
- "tmpmin": "18" //最低温度
- "winddir": "东南风", //风向
- "windsc": "3-4", //风力
- */
- public class Dailyforecast
- {
- public string Date { get; set; }
- public string Astrosr { get; set; }
- public string Astross { get; set;}
- public string Txt_d { get; set; }
- public string Txt_n { get; set; }
- public string Hum { get; set; }
- public string Pop { get; set; }
- public string Tmpmax { get; set; }
- public string Tmpmin { get; set; }
- public string Winddir { get; set; }
- public string Windsc { get; set; }
- }
我们来看截取的这一段JSON数据:
JObject jsonobj = JObject.Parse(result);
JArray jsonarry = JArray.Parse(jsonobj["HeWeather data service 3.0"].ToString());
JToken suggestion = jsonarry[0]["suggestion"];
suggestions.Comfbrf = suggestion["comf"]["brf"].ToString();
借助上面几行代码就可以取到第三行的“较舒适”三个字了,像jsonarry[0]["suggestion"]["comf"]["brf"]这样来取相应的数据还是相当方便的,动手试试,不太难的。我这里之所以这么多代码,是为了要解析出很多的JSON数据。。。。来看运行结果:(废话:查询结果依次是当前天气,FilpView控件展示的未来十天天气,一些天气指数)
3.博客园RSS(http://www.cnblogs.com/rss)的解析
在UWP里面,Windows.Web.Syndication命名空间对访问RSS源提供了比较好的支持,然而这次对博客园RSS的解析并没有采用这个命名空间下的类,而是直接解析XML文档来的。个人感觉在解析的时候还是遇到了一些坑的,里面貌似留了一些空格等东西,反正SelectNodes等的那个Xpath怎么写都不太对,最后直接用GetElementsByTagName了,此痛试过就知道。。。我们的HttpClient类采用的是Windows.Web.Http命名空间下的,XmlDocument则来自Windows.Data.Xml.Dom命名空间。还是像以前提到的,XML解析用好”快速监视“根据情况动态调整一下,不太难的。ok,直接贴代码,不做过多解释。
前台xaml:
- <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="*"></ColumnDefinition>
- <ColumnDefinition Width="*"></ColumnDefinition>
- </Grid.ColumnDefinitions>
- <ListView x:Name="listview" ItemClick="listview_ItemClick" IsItemClickEnabled="True">
- <ListView.ItemTemplate>
- <DataTemplate>
- <StackPanel Orientation="Vertical" Margin="10">
- <TextBlock TextWrapping="Wrap" Text="{Binding Title}" FontSize="18"/>
- <StackPanel Orientation="Horizontal">
- <TextBlock Text="{Binding AuthorName}" FontSize="15"/>
- <TextBlock Text="{Binding PublishedTime}" FontSize="15" Margin="30,0,10,0"/>
- </StackPanel>
- </StackPanel>
- </DataTemplate>
- </ListView.ItemTemplate>
- </ListView>
- <WebView x:Name="wv" Grid.Column="1"/>
- </Grid>
后台代码:(废话:把InitData方法放在MainPage的构造函数里面调用)
- private async void InitData()
- {
- HttpClient httpClient = new HttpClient();
- httpClient.DefaultRequestHeaders.Add("user-agent", "Mozilla/5.0 (compatible;MSIE 10.0;Windows NT 6.2;WOW64;Trident/6.0)");
- HttpResponseMessage response = await httpClient.GetAsync(new Uri("http://www.cnblogs.com/rss"));
- response.EnsureSuccessStatusCode();
- string result = await response.Content.ReadAsStringAsync();
- List<Article> articlelist = new List<Article>();
- XmlDocument xdoc = new XmlDocument();
- xdoc.LoadXml(result);
- IXmlNode xn = xdoc.ChildNodes.Item(); // feed
- XmlElement topxe = (XmlElement)xn;
- XmlNodeList nodelist = topxe.GetElementsByTagName("entry");
- foreach (IXmlNode node in nodelist)
- {
- XmlNodeList xeIdnodelist = ((XmlElement)node).GetElementsByTagName("id");
- XmlNodeList xeTitlenodelist = ((XmlElement)node).GetElementsByTagName("title");
- XmlNodeList xePublishednodelist = ((XmlElement)node).GetElementsByTagName("published");
- XmlNodeList xecontentnodelist = ((XmlElement)node).GetElementsByTagName("content");
- XmlNodeList xeAuthornodelist = ((XmlElement)node).GetElementsByTagName("author");
- string id = xeIdnodelist.Item().InnerText;
- string title = xeTitlenodelist.Item().InnerText.Split('-')[];
- string published = xePublishednodelist.Item().InnerText;
- string content = xecontentnodelist.Item().InnerText;
- string authorname = xeAuthornodelist.Item().ChildNodes.Item().InnerText;
- articlelist.Add(new Article() { Id = id, Title = title, AuthorName = authorname, PublishedTime = published, Content = content });
- }
- listview.ItemsSource = articlelist;
- }
- private void listview_ItemClick(object sender, ItemClickEventArgs e)
- {
- Article article = e.ClickedItem as Article;
- wv.NavigateToString(article.Content);
- }
- Article类:
- public class Article
- {
- public string Id { get; set; }
- public string Title { get; set; }
- public string AuthorName { get; set; }
- public string PublishedTime { get; set; }
- public string Content { get; set; }
- }
运行结果:(废话:我们用ListView控件来显示文章的标题等信息,文章的内容由WebView控件来展示)
4.UWP调用自己实现的Web API
我们来利用ASP.NET Web API实现一个简单的API接口供UWP客户端来调用。由于本人的ASP.NET技术有限,所以这个API几乎是靠Visual Studio来自动生成,我们的数据采用Database First的方式来实现。
Firstly,新建一个ASP.NET Web应用程序,然后来到下图,为简单起见,选择“Empty”模板,然后选中“Web API”,点击“确定”,ok。
Secondly,右击项目的“Models”文件夹,依次,“添加”-->"新建项",在右边选择“数据”,然后选择“ADO.NET 实体数据模型”,名称处命名,点击“添加”,ok
然后我们来到下图,选择“来自数据库的Code First”,点击“下一步”
接着是下图
点击新建连接,出现下图,服务器名“.”表示本机,然后登陆到服务器,选择要连接的数据库,测试连接,连接成功,点击“确定“即可
aaarticlea/png;base64,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" alt="" />
然后是此图,我们这次只用到Books表,所有就只选中它了。点击“完成”之后,会在Models文件夹下面生成许多的文件,自行查看。。。
前面这些步骤说起来比较麻烦,也可能还没说清楚,由于我之前已经完成了编码,再记录的博客,也会漏掉一些内容,这些如果是自己操作熟了,会很简单的。数据还可以采用Code First等方式,,,,,不详述了。
Then,右击“Controllers文件夹”,点击添加控制器,如下图,点击“添加”
之后是这个,选择数据上下文类和模型类,然后再点击“添加”
aaarticlea/png;base64,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" alt="" />
点击添加,然后会在Controller文件夹下生成BooksController.cs类文件(图上的Books1Controller是因为我之前已完成编码,已经有了BooksController。。。。),我们打开BooksController类,会看到自动生成了很多的方法(模板的强大力量啊,用起来确实很方便,由于只是演示,就用模板了。。。),代码很多,这里就不贴了,里面的方法大多都对应一种HTTP请求的。
比如下面这个方法:
// GET: api/Books
public IQueryable<Books> GetBooks()
{
return db.Books;
}
我们生成并开始调试,然后浏览器会报错:HTTP Error 403.14 - Forbidden,这时候,我们只需要在那个地址后面加上api/Books就ok,根据不同的浏览器会返回json或xml数据,其他的方法则类似。至此API接口已全部完成。
最后就是客户端的调用了。分别采用了请求XML和JSON的方式,由于HTTP请求以及XML和JSON的解析,前面已经学习过,这里不再赘述,直接贴代码。
请求XML数据:
- private async void InitDataXml()
- {
- HttpClient httpClient = new HttpClient();
- httpClient.DefaultRequestHeaders.Accept.Add(new HttpMediaTypeWithQualityHeaderValue("application/xml"));
- HttpResponseMessage response = await httpClient.GetAsync(new Uri("http://localhost:64339/api/books"));
- response.EnsureSuccessStatusCode();
- string result = await response.Content.ReadAsStringAsync();
- List<Books> bookslist = new List<Books>();
- XmlDocument xdoc = new XmlDocument();
- xdoc.LoadXml(result);
- IXmlNode xn = xdoc.ChildNodes.Item();
- XmlElement topxe = (XmlElement)xn;
- XmlNodeList nodelist = xn.ChildNodes;
- foreach (IXmlNode node in nodelist)
- {
- XmlElement xe = (XmlElement)node;
- XmlNodeList xenodelist = xe.ChildNodes;
- bookslist.Add(new Books() {
- book_Name =xenodelist.Item().InnerText,
- book_Author = xenodelist.Item().InnerText,
- book_Isbn = xenodelist.Item().InnerText,
- book_cate =xenodelist.Item().InnerText,
- book_Press = xenodelist.Item().InnerText,
- book_Rressdate = xenodelist.Item().InnerText,
- book_Remain = Convert.ToInt32(xenodelist.Item().InnerText)
- });
- }
- listView.ItemsSource = bookslist;
- }
请求JSON数据:
- private async void InitDataJson()
- {
- HttpClient httpClient = new HttpClient();
- httpClient.DefaultRequestHeaders.Accept.Add(new HttpMediaTypeWithQualityHeaderValue("application/json"));
- HttpResponseMessage response = await httpClient.GetAsync(new Uri("http://localhost:64339/api/books"));
- response.EnsureSuccessStatusCode();
- string result = await response.Content.ReadAsStringAsync();
- List<Books> bookslist = new List<Books>();
- JsonArray arrays = JsonArray.Parse(result);
- for (int i = ; i < arrays.Count; i++)
- {
- JsonObject obj = arrays.GetObjectAt((uint)i);
- bookslist.Add(new Books() {
- book_Name =obj.GetNamedString("book_Name"),
- book_Author = obj.GetNamedString("book_Author"),
- book_Isbn = obj.GetNamedString("book_Isbn"),
- book_cate =obj.GetNamedString("book_cate"),
- book_Press = obj.GetNamedString("book_Press"),
- book_Rressdate = obj.GetNamedString("book_Rressdate"),
- book_Remain = Convert.ToInt32(obj.GetNamedNumber("book_Remain"))
- });
- }
- listView.ItemsSource = bookslist;
- }
Book.cs:
- public class Books
- {
- public int book_Id { get; set; }
- public string book_Name { get; set; }
- public string book_Author { get; set; }
- public string book_Isbn { get; set; }
- public string book_cate { get; set; }
- public string book_Press { get; set; }
- public string book_Rressdate { get; set; }
- public int book_Remain { get; set; }
- }
运行结果:
借助于ASP.NET Web API,我们最终将SQL Server数据库中的数据通过UWP应用进行了展示。(我发现最后的这个图表示的意思有点不够,懒得换了,懒)
好了,这就是本次的全部内容了,貌似有点乱,要Demo的留邮箱。太晚了,睡觉了,晚安!
Windows 10开发基础——XML和JSON (二)的更多相关文章
- Windows 10开发基础——XML和JSON (一)
主要内容: JSON的序列化与反序列化 XML的序列化与反序列化 1.JSON的序列化与反序列化 JSON(JavaScript Object Notation)是一种轻量级的数据交换语言,它 ...
- Windows 10开发基础——文件、文件夹和库(一)
原文:Windows 10开发基础--文件.文件夹和库(一) 主要内容: 1.枚举查询文件和文件夹 2.文本文件读写的三种方法——创建写入和读取文件 3.获得文件的属性 枚举查询文件和文件夹 先了解一 ...
- Windows 10开发基础——文件、文件夹和库(二)
主要内容: 使用选取器打开和保存文件 关于文件.文件夹和库,如果深究其实还是有比较多的内容,我们这一次来学习一下选取器就收了.还有上篇博文中读写文本文件的三种方式可以细细体会一下. 文件选取器包含文件 ...
- Windows 10开发基础——网络编程
主要内容: HttpClient类 Socket通信 WCF通信 HttpClient类 在UWP中可以用来进行网络通信的HttpClient类有两个,System.Net.Http.Htt ...
- Windows 10开发基础——启动默认应用的URI
主要内容:通过指定的URI来启动默认的应用(设置,应用商店,地图,人脉) 方法一:直接在XAML中添加如下代码 <TextBlock x:Name="LocationDisabledM ...
- Windows 10开发基础——VS2015 Update1新建UWP项目,XAML设计器无法加载的解决
这次,我们来解决一个问题...在使用Visual Studio 2015 Update 1的时候,新建一个UWP的项目,XAML设计器就会崩,具体异常信息如下图: 解决方法如下:下面圈出的那个路径就按 ...
- Windows 10开发基础——指针事件和操作事件(一)
主要内容: 1.指针事件 2.操作事件 1.指针事件 指针事件由各种活动输入源引发,包括触摸.触摸板.笔和鼠标(它们替代传统的鼠标事件).指针事件基于单一输入点(手指.笔尖.鼠标光标),但不支持基于速 ...
- Windows 10 开发人员预览版中的新增功能(转自 IT之家)
Windows 10 开发人员预览版中的新增功能 在Win10预览版中安装工具与SDK后,即可着手创建Windows通用应用或先浏览目前的环境与此前相比都发生了什么变化. 应用建模 文件资源管理器: ...
- windows下mongodb基础玩法系列二CURD附加一
windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) windows下 ...
随机推荐
- Android多媒体开发(3)————使用Android NKD编译havlenapetr-FFMpeg-7c27aa2
1. 使用NDK去编译官方的FFmpeg原版的话,还得自己实现JNI层与Java层,工程量比较大.所以移植FFmpeg到Android平台时,可以移植一些已经实现JNI与JAVA层的开源项目,毕竟软件 ...
- 下载的pod链接失效,build diff: /../Podfile.lock: No such file or directory解决办法
build diff: /../Podfile.lock: No such file or directory 1.终端进入文件路径,执行pod install 2.在工程设置中的Build Phas ...
- Path类的最全面具体解释 - 自己定义View应用系列
前言 自己定义View是Android开发人员必须了解的基础:而Path类的使用在自己定义View绘制中发挥着很关键的数据 网上有大量关于自己定义View中Path类的文章.但存在一些问题:内容不全. ...
- 编译器是C写的,包括一点C++,editor和debugger是C++写的(最早的16位编译器是纯汇编写的)
16bit compiler was written in pure assembler. The current compiler is written in C. It was derived f ...
- 【u226】查单词
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 全国英语四级考试就这样如期到来了.可是小Y依然没有做好充分的准备.为了能够大学毕业,可怜的小Y决定作弊 ...
- Opencv 使用Stitcher类图像拼接生成全景图像
Opencv中自带的Stitcher类可以实现全景图像,效果不错.下边的例子是Opencv Samples中的stitching.cpp的简化,源文件可以在这个路径里找到: \opencv\sourc ...
- 如何在使Xcode打包iOS应用时自动增加编译号
在红框标注的输入框中输入:真机调试编译成功增加 echo $CONFIGURATION if [ "Release" == "${CONFIGURATION}" ...
- Asp.net压缩网站中的文件
为了说明自定义虚拟路径,这里弄个示例,仅仅用一个压缩包存放一个网站的多个文件. 这个东西是要需要通过实现3个抽象类来实现: System.Web.Hosting.VirtualPathProvider ...
- 【23.33%】【hdu 5945】Fxx and game
Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total Submission(s ...
- Android之assets资源目录的各种操作
第一种方法: String path = file:///android_asset/文件名; 第二种方法: InputStream abpath = getClass() ...