最近在做天气预报应用,这个应用中需要用到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操作的更多相关文章

  1. 我也来学着写写WINDOWS服务-解析xml抓取数据并插入数据库

    项目告一段落,快到一年时间开发了两个系统,一个客户已经在试用,一个进入客户测试阶段,中间突然被项目经理(更喜欢叫他W工)分派一个每隔两小时用windows服务去抓取客户提供的外网xml,解析该xml, ...

  2. C#:XML操作类

    写的一个XML操作类,包括读取/插入/修改/删除. using System; using System.Data; using System.Configuration; using System. ...

  3. LINQ系列:LINQ to XML操作

    LINQ to XML操作XML文件的方法,如创建XML文件.添加新的元素到XML文件中.修改XML文件中的元素.删除XML文件中的元素等. 1. 创建XML文件 string xmlFilePath ...

  4. T-Sql(五)xml操作

    t-sql中的xml操作在我们平时做项目的过程中用的很少,因为我们处理的数据量很少,除非一些用到xml的地方,t-sql中xml操作一般用在数据量很大,性能优化的地方,当然我在平时做项目的时候也是没用 ...

  5. XML格式示例 与 XML操作(读取)类封装

    header('Content-Type: text/xml'); <?xml version="1.0" encoding="utf-8" standa ...

  6. 【Java EE 学习 33 上】【JQuery样式操作】【JQuery中的Ajax操作】【JQuery中的XML操作】

    一.JQuery中样式的操作 1.给id=mover的div采用属性增加样式.one $("#b1").click(function(){ $("#mover" ...

  7. 简单的XML操作类

    /// <summary> /// XmlHelper 的摘要说明. /// xml操作类 /// </summary> public class XmlHelper { pr ...

  8. .net学习笔记---xml操作及读写

    一.XML文件操作中与.Net中对应的类 微软的.NET框架在System.xml命名空间提供了一系列的类用于Dom的实现. 以下给出XML文档的组成部分对应.NET中的类: XML文档组成部分 对应 ...

  9. C#常用操作类库三(XML操作类)

    /// <summary> /// XmlHelper 的摘要说明. /// xml操作类 /// </summary> public class XmlHelper { pr ...

随机推荐

  1. strcpy,memcpy,内存块重叠

    前段时间准备面试,看了一些库函数的实现,在看到memcpy时,发现有处理source和destination所指内存有重叠的情况,而strcpy没有,特别模仿库函数写了这个函数,并进行了测试.以下是具 ...

  2. JAVA环境变量正确设置,却无法在cmd中javac

    今晚试着重新设置JAVA的环境变量,按着度娘告知的操作方法: 1.打开我的电脑--属性--高级--环境变量 2.新建系统变量JAVA_HOME 和CLASSPATH 变量名:JAVA_HOME 变量值 ...

  3. oracle查看表锁及解锁

    --kill session语句 1 alter system kill SESSION '2171,60490'; --以下几个为相关表 1 2 3 4 5 6 7 SELECT * FROM v$ ...

  4. 转载:Python中的new style class机制实现

    1.Python中的对象模型python中所有东西都是对象 class对象:表示Python内置的类型和定义的类型instance对象(实例对象):表示由class对象创建的实例 1.1 对象间的关系 ...

  5. Centos6.4_X64飞信安装

  6. JavaScript 严格模式介绍

    如我们所知,JavaScript 是一门灵活的语言.其灵活性同样也带来了很多坑,当然也有一些是设计缺陷.比如 一个变量没有声明就赋值,默认是全局变量,如 (function () { a = 3; } ...

  7. 2 weekend110的SecureCRTPortable远程连接 + 上传安装jdk + 上传安装配置hadoop

    企业公认的最新文本版本:        https://archive.apache.org/dist/ 玩玩这个远程连接软件,是个绿色软件. 别人已经做好了的. 解压之后, 下面,软件展示下, 这会 ...

  8. PAT 1026. Table Tennis

    A table tennis club has N tables available to the public.  The tables are numbered from 1 to N.  For ...

  9. POJ 1185 状态压缩DP 炮兵阵地

    题目直达车:   POJ 1185 炮兵阵地 分析: 列( <=10 )的数据比较小, 一般会想到状压DP. Ⅰ.如果一行10全个‘P’,满足题意的状态不超过60种(可手动枚举). Ⅱ.用DFS ...

  10. [Labview资料] labview事件结构学习

      编程的主要目的是为了实现用户的某种功能,用户通过用鼠标.键盘.程序内部等触发某种程序动作,从而达到某种结果,这些操作都被称作为事件,LabVIEW中相应这些事件最常用的结构就是“事件结构”.事件结 ...