zoukankan      html  css  js  c++  java
  • Silverlight中使用xml文件(xml文件保存,节点的添加,删除)

    我的xml文件

    代码
    <?xml version="1.0" encoding="utf-8" ?>
    <Pushpins>
      
    <Pushpin>
        
    <ID>bcab6565-f1c7-4ee3-88a1-ab3115112ca5</ID>
        
    <Title>nn</Title>
        
    <Description>mmmm</Description>
        
    <VELatLongLatitude>37.814344816897488</VELatLongLatitude>
        
    <VELatLongLongitude>112.31771841645201</VELatLongLongitude>
      
    </Pushpin>
      
    <Pushpin>
        
    <ID>641f277b-da9c-4291-832f-700777a6c9b5</ID>
        
    <Title>www</Title>
        
    <Description>wwwww</Description>
        
    <VELatLongLatitude>34.4796226939071</VELatLongLatitude>
        
    <VELatLongLongitude>108.88998404145201</VELatLongLongitude>
      
    </Pushpin>
    </Pushpins>

    在silverlight页面中添加引用

    using System.Xml;
    using System.Xml.Linq;

     

    使用 LINQ to XML 从任意 URI 位置加载 XML 文件,代码如下

    代码
     string uriString = "../XMLData/XMLMapsPushpin.xml";
            XDocument xDoc 
    = null;
            
    //使用 LINQ to XML 从任意URI 位置加载 XML 文件
            private void LoadXmlData()
            {
                WebClient wc 
    = new WebClient();
                wc.OpenReadCompleted 
    += wc_OpenReadCompleted;
                wc.OpenReadAsync(
    new Uri(uriString, UriKind.Relative));
            }
            
    private void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
            {
                
    if (e.Error != null)
                {
                    
    //OutputTextBlock.Text = e.Error.Message;
                    return;
                }
                
    using (Stream s = e.Result)
                {
                    xDoc 
    = XDocument.Load(s);

                    
    this.spPushpin.Children.Clear();
                    
    foreach (var c in xDoc.Descendants("Pushpin"))
                    {
                        
    //添加图钉到地图上 PushPinControl 是一个自定义控件
                        PushPinControl pushpin = new PushPinControl();
                        pushpin.Title 
    = c.Element("Title").Value;
                        pushpin.Remark 
    = c.Element("Description").Value;
                        pushpin.Tag 
    = c.Element("ID").Value;
                        
    double x =double.Parse(c.Element("VELatLongLatitude").Value);
                        
    double y = double.Parse(c.Element("VELatLongLongitude").Value);
                        myMapLayer.AddChild(pushpin, 
    new Location(x, y));
                    }
                }
            }

    删除xml文件中的节点,代码如下:

    代码
    private void DelXmlElement ()
    {
    IEnumerable
    <XElement> qurey =
                        from item 
    in xDoc.Root.Elements()
                        
    where item.Element("ID").Value =="aaa"
                        select item;
                    qurey.Remove();
    }

    xml文件中添加节点:

    代码
    private void AddXmlElement()
    {
    if(xDoc==null )
                    {                  
                        xDoc 
    = new XDocument( new XDeclaration("1.0""utf-8""yes"),
                                                        
    new XElement("Pushpins"));
                    }
                    
    if (xDoc != null)
                    {
                        XElement newPushpin 
    = new XElement("Pushpin",
                                
    new XElement("ID",ID),
                                
    new XElement("Title", pushpin.Title),
                                
    new XElement("Description", pushpin.Remark),
                                
    new XElement("VELatLongLatitude", CurrentLocation.Latitude),
                                
    new XElement("VELatLongLongitude", CurrentLocation.Longitude)     
                           );
                        xDoc.Root.Add(newPushpin);                   
                    }
     }

    保存xml文档到服务器指定的位置:

    代码
    #region 保存xml文档到服务器
            
    private void Button_SaveXml(object sender, RoutedEventArgs e)
            {
                WebClient webClient 
    = new WebClient();
                webClient.OpenWriteCompleted 
    += new OpenWriteCompletedEventHandler(webClient_OpenWriteCompleted);
                webClient.OpenWriteAsync(
    new Uri("/WebSaveXmlFile.aspx?filename=XMLMapsPushpin.xml",UriKind.Relative));
            }
            
    void webClient_OpenWriteCompleted(object sender, OpenWriteCompletedEventArgs e)
            {
                Stream outputStream 
    = e.Result;
                
    string str = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>";
                
    string outString = str + xDoc.ToString();
                
    byte[] fileContent = Encoding.UTF8.GetBytes(outString);            
                outputStream.Write(fileContent, 
    0, fileContent.Length);
                
    //No need to flush.
                outputStream.Close();
                MessageBox.Show(
    "保存成功!");
            }
            
    #endregion 保存xml文档到服务器

    服务器端asp.net页面代码:

    代码
    protected void Page_Load(object sender, EventArgs e)
            {
                
    string fileName = Request.Params["filename"];
                
    if (!string.IsNullOrEmpty(fileName))
                {
                    Stream inputStream 
    = Request.InputStream;
                    FileStream fileStream 
    = File.Create(Server.MapPath("~"+ "\\XMLData\\" + fileName);
                    
    byte[] fileContent = new byte[inputStream.Length];
                    inputStream.Read(fileContent, 
    0, fileContent.Length);
                    fileStream.Write(fileContent, 
    0, fileContent.Length);
                    fileStream.Flush();
                    fileStream.Close();
                    inputStream.Close();
                    
    //No need to respond.
                    Response.Clear();
                    Response.End();
                }
            }
  • 相关阅读:
    微擎开发------day02
    微擎开发------day01
    Myisam 和 Innodb 区别
    Curl的简单使用步骤
    微信小程序之----获取设备信息
    微信小程序之 -----事件
    微信小程序之---- 数据处理
    微信小程序之----制作视频弹幕
    cocos2dx安卓客户端接入移动MM付费SDK
    Win7 / Win8 搭建配置【vs2010】、【cocos2dx环境】、【Android平台】
  • 原文地址:https://www.cnblogs.com/z_lb/p/1729155.html
Copyright © 2011-2022 走看看