最近在做天气预报应用,这个应用中需要用到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. 【转】shell 教程——03 Shell脚本语言与编译型语言的差异

    大体上,可以将程序设计语言可以分为两类:编译型语言和解释型语言. 编译型语言 很多传统的程序设计语言,例如Fortran.Ada.Pascal.C.C++和Java,都是编译型语言.这类语言需要预先将 ...

  2. MSSQLSERVER数据库- 打开表出现目录名无效

    打开SQLSERVER数据库,出现目录名无效,如下图: 解决方法到 临时目录:C:\Documents and Settings\Administrator\Local Settings\Temp 手 ...

  3. Spring技术内幕——深入解析Spring架构与设计原理(一)IOC实现原理

    IOC的基础 下面我们从IOC/AOP开始,它们是Spring平台实现的核心部分:虽然,我们一开始大多只是在这个层面上,做一些配置和外部特性的使用工作,但对这两个核心模块工作原理和运作机制的理解,对深 ...

  4. NIO机制总结

    Selector selector = Selector.open(); 普通的IO流的读取,写入都是一个字节一个字节或一个字符一个字符的循环进行,在这个过程中,程序是阻塞的,inputStream虽 ...

  5. SpringMVC接收页面表单参数(转)

    作者:CN.programmer.Luxh 和java相关 一个普通的表单. 表单的代码如下: <%@ page language="java" contentType=&q ...

  6. 在Eclipse中怎样公布创建的JavaWebproject

    博客<在Eclipse中怎样创建JavaWebproject>中图文并茂的说明了Eclipse中创建JavaWebproject的方法:博客<怎样为Eclipse开发工具中创建的Ja ...

  7. [AngularJS] angular-formly: Extending Types

    Extending types is one of the ways that makes angular-formly help you keep your Angular forms DRY. W ...

  8. 比較具体的handle机制

    Android的消息机制,用Android线程间通信的Message机制,Android中Handler的用法--在子线程中更新界面,handler机制 Android的消息机制(一) android ...

  9. 【转】cocos2d-x使用第三方的TTF字体库

    步骤一:找一个ttf字体库 步骤二:找到这个ttf字体库的真实名称 打开你的应用 "字体册"(MAC OS系统下),如下图操作): 找到了字体库真实名称,那么修改将其真名作为为此新 ...

  10. Ubuntu16.04下Intellij IDEA不能输入中文的问题

    最近Ubuntu升级到16.04后发现IDEA的中文输入法不能正常切换了. 之前用的是fcitx安装的输入法, 折腾了半天才解决. 只需要修改idea.sh文件即可. 不需要折腾fcitx中的配置. ...