Windows phone 之Xml操作
最近在做天气预报应用,这个应用中需要用到Xml来存储关注的城市列表,保存一下代码,方便以后使用,也给博友们一个参考:
其中:添加关注城市的操作代码是:
其实就是,
(1)先把数据从CareCityCode.xml文档中查询出来,放在集合A中,然后删除该文档。
(2)把新关注的城市添加到集合A中,
(3)把集合A中的数据再新建一个CareCityCode.xml,保存到该xml文档中。
#region 获取关注城市ID列表 --GetCareCityList
/// <summary>
/// 获取关注城市ID列表
/// </summary>
/// <returns></returns>
public static ObservableCollection<City> GetCareCityList()
{
ObservableCollection<City> list = new ObservableCollection<City>();
using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
{
if (isf.FileExists("CareCityCode.xml"))
{
using (IsolatedStorageFileStream isoStream = isf.OpenFile("CareCityCode.xml", FileMode.Open, FileAccess.Read))
{
XElement xel = XElement.Load(isoStream);
//MessageBox.Show("Xml文档的数据"+xel.ToString());
var citys = from city in xel.Descendants("CityCode")
//orderby "DateTime" descending
select city;
foreach (var city in citys)
{
list.Add(new City { CityID = city.Element("ID").Value , CityName=city.Element("Name").Value});
}
}
}
}
return list;
}
#endregion
#region 添加关注城市ID --AddCareCity
/// <summary>
/// 添加关注城市ID
/// </summary>
/// <param name="CityID"></param>
public static void AddCareCity(string CityID,string CityName)
{
using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
{
if (isf.FileExists("CareCityCode.xml"))
{
ObservableCollection<City> list = GetCareCityList();
//判断添加的要关注的城市是否已经存在
foreach (var City in list)
{
if (City.CityID == CityID)
{
MessageBox.Show("已在关注列表中!");
return;
}
}
list.Add(new City() { CityID=CityID, CityName=CityName});
isf.DeleteFile("CareCityCode.xml");
using (IsolatedStorageFileStream isoStream = isf.OpenFile("CareCityCode.xml", FileMode.OpenOrCreate, FileAccess.Write))
{
XDocument doc = new XDocument(new XDeclaration("1.0", "utf-8", "yes"), new XElement("CityCodes"));
foreach (City temp in list)
{
doc.Element("CityCodes").Add(new XElement("CityCode",
new XElement("ID", temp.CityID),
new XElement("Name",temp.CityName)));
}
MessageBox.Show(doc.ToString());
doc.Save(isoStream);
}
}
else
{
using (IsolatedStorageFileStream isoStream = isf.OpenFile("CareCityCode.xml", FileMode.OpenOrCreate, FileAccess.Write))
{
XElement xel = new XElement("CityCodes",
new XElement("CityCode",
new XElement("ID", CityID),
new XElement("Name",CityName))
);
XDocument doc = new XDocument(new XDeclaration("1.0", "utf-8", "yes"), xel);
doc.Save(isoStream);
MessageBox.Show(doc.ToString());
}
}
}
}
#endregion
删除代码:明天再贴,
而且我感觉这种方法很麻烦的,,,稍后会介绍一种比较简单的方法。
Windows phone 之Xml操作的更多相关文章
- 我也来学着写写WINDOWS服务-解析xml抓取数据并插入数据库
项目告一段落,快到一年时间开发了两个系统,一个客户已经在试用,一个进入客户测试阶段,中间突然被项目经理(更喜欢叫他W工)分派一个每隔两小时用windows服务去抓取客户提供的外网xml,解析该xml, ...
- C#:XML操作类
写的一个XML操作类,包括读取/插入/修改/删除. using System; using System.Data; using System.Configuration; using System. ...
- LINQ系列:LINQ to XML操作
LINQ to XML操作XML文件的方法,如创建XML文件.添加新的元素到XML文件中.修改XML文件中的元素.删除XML文件中的元素等. 1. 创建XML文件 string xmlFilePath ...
- T-Sql(五)xml操作
t-sql中的xml操作在我们平时做项目的过程中用的很少,因为我们处理的数据量很少,除非一些用到xml的地方,t-sql中xml操作一般用在数据量很大,性能优化的地方,当然我在平时做项目的时候也是没用 ...
- XML格式示例 与 XML操作(读取)类封装
header('Content-Type: text/xml'); <?xml version="1.0" encoding="utf-8" standa ...
- 【Java EE 学习 33 上】【JQuery样式操作】【JQuery中的Ajax操作】【JQuery中的XML操作】
一.JQuery中样式的操作 1.给id=mover的div采用属性增加样式.one $("#b1").click(function(){ $("#mover" ...
- 简单的XML操作类
/// <summary> /// XmlHelper 的摘要说明. /// xml操作类 /// </summary> public class XmlHelper { pr ...
- .net学习笔记---xml操作及读写
一.XML文件操作中与.Net中对应的类 微软的.NET框架在System.xml命名空间提供了一系列的类用于Dom的实现. 以下给出XML文档的组成部分对应.NET中的类: XML文档组成部分 对应 ...
- C#常用操作类库三(XML操作类)
/// <summary> /// XmlHelper 的摘要说明. /// xml操作类 /// </summary> public class XmlHelper { pr ...
随机推荐
- Bzoj 2252: [2010Beijing wc]矩阵距离 广搜
2252: [2010Beijing wc]矩阵距离 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 563 Solved: 274[Submit][ ...
- ASP.NET中设置一个定时器来定时更新 转
asp.net 定时器 比较少用, 中国红木网这是一个相当实用的功能,有了RSS博客镜像,就不需要在多处同时发布博客日志了.比如你同时在新浪上有自己的博客,又同时有自己的个人博客站点,那么你只需要在 ...
- [一位菜鸟的COCOS-2D编程之路]COCOS2D中得动作,特效和动画
一,CCActionManager 管理所有节点动作的对象 来看看打飞机里面的一个onEnter 方法 - (void)onEnter { [super onEnter]; //一定要注意添加此方法, ...
- GridControl 无数据时显示信息
图例: 主要代码如下: 说明:给GridView添加事件gv_CustomDrawEmptyForeground private void gv_CustomDrawEmptyForeground(o ...
- 利用UI_APPEARANCE统一设置UITabBarItem样式
-(void)setupTabBarItemAttributes{ //attributes NSMutableDictionary *selectedAttrs= [NSMutableDiction ...
- hibernate sql查询
如果你跟我一样比较熟悉SQL,同时不想学习一门新的语言.那么在hibernate中使用Native SQL 查询也是一种不错的方式. 一方面,Native SQL在效率方面有天生的优势: 另一方面,S ...
- 【Android - 基础】之Dialog分类及使用
1.确定取消对话框 代码: // 使用AlertDialog.Builder初始化对话框 AlertDialog.Builder builder0 = new AlertDialog.Builder( ...
- poj 3294 Life Forms
后缀数组的题目,把后缀连接起来,这个还是先二分答案,然后选取一段连续的height值,判断这些height代表的后缀有没有覆盖一半以上的字符串. 得出答案的长度之后还要在枚举连续的heigh,判断有没 ...
- 【转】copy 和 mutablecopy (深拷贝和浅拷贝)
阅读本文之前首先了解copy与retain的区别,如果有不正确的地方望大家多多指教: copy与retain的区别: copy是创建一个新对象,retain是创建一个指针,引用对象计数加1.Copy属 ...
- C#中对于可变性的限制
发现很少有集中讨论C#可变性限制的中文博文(要么就是一大段文字中夹杂很多凌乱的部分),所以写发篇博文,集中讨论,这些限制基本是基于安全考虑,亦或者根本难以实现而产生的. 注:本文不再解释什么是可变性, ...