前述:这个知识是在Windows8.1或WP8.1中运用Linq to xml获取一个xml文件里的数据。(网上也很多类似的知识,可以借鉴参考)

平台:windows8.1 metro 或者WP8.1

步骤:1、在项目中准备一个xml文件。我在项目中建立了一个city.xml,如图:

city.xml具体代码如下:

<?xml version="1.0" encoding="utf-8" ?>
<China><city><id>1</id><name>北京</name><description>中国的首都</description></city><city><id>2</id><name>深圳</name><description>经济繁荣</description></city><city><id>3</id><name>广州</name><description>很大的城市</description></city><city><id>4</id><name>香港</name><description>亚洲金融中心</description></city><province><id>1</id><name>广东省</name><city><id>5</id><name>佛山</name><description>功夫之地</description></city><city><id>6</id><name>河源</name><description>天是蓝的</description></city></province>
</China>

2、创建一个对应city.xml的sampldata类

代码如下:

    public class City{private int id;public int Id{get { return id; }set { id = value; }}private string  name;public string  Name{get { return name; }set { name = value; }}private string  description;public string  Description{get { return description; }set { description = value; }}       }public class Province//这个是为了测试
    {private int id;public int Id{get { return id; }set { id = value; }}private string name;public string Name{get { return name; }set { name = value; }}private List<City> cities;public List<City> Cities{get { return cities; }set { cities = value; }}

3、UI布局(在WP8.1上,布局效果可以更好看点)

MainPage.xmal代码如下:

            <StackPanel Orientation="Horizontal"><Button Name="getxml" Content="获取数据1" Width="100" Height="40" VerticalAlignment="Top" Click="getxml_Click"/><Button Name="getxml2" Content="获取数据2" Width="100" Height="40" VerticalAlignment="Top" Click="getxml2_Click" Margin="80,0,0,0"/></StackPanel><ListView x:Name="datalist" Margin="0, 50,0,0"><ListView.ItemTemplate><DataTemplate><StackPanel Orientation="Horizontal"><TextBlock Text="{Binding Id}" Style="{ThemeResource TitleTextBlockStyle}"/><StackPanel Orientation="Vertical"><TextBlock Text="{Binding Name}" Style="{ThemeResource ListViewItemContentTextBlockStyle}"/><TextBlock Text="{Binding Description}" Style="{ThemeResource BodyTextBlockStyle}"/></StackPanel></StackPanel></DataTemplate></ListView.ItemTemplate></ListView>

4、后台具体代码

Note:这里需要 using System.Xml.Linq;

两个Button的点击事件代码如下:

private async void getxml_Click(object sender, RoutedEventArgs e){//在windows8.1中还可以获取xml文件,但在WP8.1会出错,我不知道为什么,求解释//string path = Path.Combine(Package.Current.InstalledLocation.Path, "DataModel/city.xml");//文件Uri//XDocument xmlfile = XDocument.Load(path);//在Windows8.1和WP8.1中都可以执行,获取xml文件
            XDocument xmlfile;Uri fileUri = new Uri(@"ms-appx:///DataModel/city.xml");//ms-appx:// 为安装目录var file = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(fileUri);//获取city.xml文件, XDocument.Load()可利用stream,Uri,xmlreader等几种方法获取文件using (var stream = await file.OpenStreamForReadAsync())//文件操作都要转换成流
            {xmlfile = XDocument.Load(stream);};var data = from query in xmlfile.Descendants("city")//获取city.xml中所有名为city节点select new City{Id = (int)query.Element("id"),Name = (string)query.Element("name"),Description = (string)query.Element("description")};datalist.ItemsSource = data;}private async void getxml2_Click(object sender, RoutedEventArgs e){datalist.ItemsSource = null;XDocument xmlfile;Uri fileUri = new Uri(@"ms-appx:///DataModel/city.xml");//ms-appx:// 为安装目录var file = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(fileUri);//获取city.xml文件using (var stream = await file.OpenStreamForReadAsync())//文件操作都要转换成流
            {xmlfile = XDocument.Load(stream);};var data = from query in xmlfile.Descendants("city")where (string)query.Parent.Element("name") =="广东省"//linq to xml 选择id<3的cityorderby (int)query.Element("id")select new City{Id = (int)query.Element("id"),Name = (string)query.Element("name"),Description = (string)query.Element("description")};datalist.ItemsSource = data;                       }

上面主要运用了Linq to xml, 需要注意的是Windows8.1和WP8.1在获取xml文件的方法有点差异,或者我哪里弄错了,请大家指出。还有请大家教下我怎样利用LINQ把province节点的数据绑定到Province类上,并给data赋值。

运行效果:

点击获取数据1按钮,效果如图:                  点击获取数据2按钮,效果如图:

                         

-----------------------------------------------------------------------------------------------------------个人总结

写完了这个知识积累了,自学这些编程真的有点学得慢,有个人带就好了啊。又要去复习集成电源和嵌入式了,为了明天下午的考试=.=还有明天上午要去财富世纪广场面试.Net实习生了,不知道凭借自己的现在的知识能不能通过,希望顺顺利利。

转载于:https://www.cnblogs.com/NEIL-X/p/4221319.html

WinRT知识积累1之读xml数据相关推荐

  1. php xmlreader 读xml,PHP中使用xmlreader读取xml数据示例

    这篇文章主要介绍了PHP中使用xmlreader读取xml数据示例,本文示例相对简单,只包含了一个读取功能,需要的朋友可以参考下 有一个XML文件,,内容如下: 复制代码 代码如下: Simpsons ...

  2. 数据分析从零开始实战,Pandas读写Excel/XML数据

    点击查看第一篇文章: 数据分析从零开始实战,Pandas读取HTML页面+数据处理解析_ 数据分析 从零开始到实战,Pandas读写CSV数据_ 数据分析 从零开始到实战,Pandas读写CSV数据 ...

  3. Android网络之数据解析----SAX方式解析XML数据

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  4. 一文读懂数据要素(附研究文档大合集下载)

    最近数据要素这个词不断出现在大数据圈里也同时出现在公众视野.各个研究机构,政府部门都在重点关注数据要素及其作用及发展,并提供各类政策性的指引,那么什么是数据要素呢? 本文将综合目前主流的研究进行归纳整 ...

  5. 渗透测试-Linux常用命令知识积累

    Linux常用命令知识积累 文章目录 Linux常用命令知识积累 前言 基本操作 关机 重启 查看系统内核信息 查看系统内核版本 查看当前用户环境变量 查看有几个逻辑cpu, 包括cpu型号 查看有几 ...

  6. sql查询返回xml数据之应用【转载】

    sql查询返回xml数据之应用[转载] 今天查看邮件,看到一标题Using the FOR XML Clause to Return Query Results as XML,点进去看了看,以前也是知 ...

  7. AbutionGraph:构建以知识图谱为核心的下一代数据中台

    「免费学习 60+ 节公开课:投票页面,点击讲师头像」 作者 | 图特摩斯科技创始人闭雨哲 出品 | AI科技大本营(ID:rgznai100) 前言 图特摩斯科技(Thutmose)基于自研的图形数 ...

  8. iOS - XML 数据解析

    前言 @interface NSXMLParser : NSObjectpublic class NSXMLParser : NSObject 1.XML 数据 XML(Extensible Mark ...

  9. 人工智能伦理如何设定,从种群层面看人类的知识积累和进化

    前言:9月份中宣部出版局<中国图书评论>对<崛起的超级智能>进行了推荐和评论,对其中阐述的种群知识库扩展观点给予了重点关注.应该说种群知识库扩展是互联网大脑架构不断发展的抽象推 ...

最新文章

  1. Python面试题集合
  2. 智源「高能对撞粒子分类挑战赛」开启,品鉴宇宙粒子的独特味道
  3. (详解)你应该知道的new操作符
  4. c++byte数组和文件的相互转换_终于!word、excel、ppt文件相互转换技巧来了!
  5. Memstore数据刷写与阻塞机制深入剖析及参数优化
  6. C语言变量d的定义法则,C语言变量命名规则(3页)-原创力文档
  7. OpenShift 4 之获取版本升级路径图
  8. Flutter实战之Flutter应用生命周期 AppLifecycleState浅析
  9. Centos7 安装字体库中文字体
  10. List集合之LinkedList
  11. 《游戏学习》java实现连珠五子棋完整代码
  12. JavaWeb项目为什么我们要放弃jsp?为什么要前后端解耦?为什么要前后端分离?2.0版,为分布式架构打基础。
  13. 我的飞信发展方案(一)
  14. A64指令集如何将64位的数值写入通用寄存器
  15. keil5图标变成白色_桌面图标出现白块,显示图标异常的解决方法
  16. UE4VR学习笔记3
  17. Android 调用JNI出错 java.lang.UnsatisfiedLinkError: No implementation found for
  18. 大学生“挑战杯”创业计划大赛财务分析估算方法与技巧【转】
  19. 推荐一款 Redis 可视化管理工具——Another Redis Desktop Manager
  20. 计算机桌面锁定怎么解除,电脑屏幕被锁定怎么解锁_电脑锁定屏幕如何取消-win7之家...

热门文章

  1. 浅谈单片机中变量访问的互斥
  2. RTSP再学习 -- Hi3516A RTSP实例
  3. Gradle不匹配报错的终极大招(gradle插件版本和gradle版本对应关系)
  4. JZOJ 5048. 【GDOI2017模拟一试4.11】IQ测试
  5. android 默认开关,android默认设置的开关
  6. 字符串拼接数字 java_使用JAVA代码实现字符串的简单拼接
  7. 怎么用python写数据库_如何使用python对数据库(mysql)进行操作
  8. 如何启用计算机超级账户,Windows7启用超级管理员账户的方法
  9. matlab中sum函数
  10. 文本分类与聚类(text categorization and clustering)