我的xml文件

Silverlight中使用xml文件(xml文件保存,节点的添加,删除)_SilverlightSilverlight中使用xml文件(xml文件保存,节点的添加,删除)_Silverlight_02代码
<?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 文件,代码如下

Silverlight中使用xml文件(xml文件保存,节点的添加,删除)_SilverlightSilverlight中使用xml文件(xml文件保存,节点的添加,删除)_Silverlight_02代码
 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文件中的节点,代码如下:

Silverlight中使用xml文件(xml文件保存,节点的添加,删除)_SilverlightSilverlight中使用xml文件(xml文件保存,节点的添加,删除)_Silverlight_02代码
private void DelXmlElement ()
{
IEnumerable<XElement> qurey =
                    from item in xDoc.Root.Elements()
                    where item.Element("ID").Value =="aaa"
                    select item;
                qurey.Remove();
}

 

 

xml文件中添加节点:

Silverlight中使用xml文件(xml文件保存,节点的添加,删除)_SilverlightSilverlight中使用xml文件(xml文件保存,节点的添加,删除)_Silverlight_02代码
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文档到服务器指定的位置:

Silverlight中使用xml文件(xml文件保存,节点的添加,删除)_SilverlightSilverlight中使用xml文件(xml文件保存,节点的添加,删除)_Silverlight_02代码
#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页面代码:

Silverlight中使用xml文件(xml文件保存,节点的添加,删除)_SilverlightSilverlight中使用xml文件(xml文件保存,节点的添加,删除)_Silverlight_02代码
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();
            }
        }