我的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 >
< 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));
}
}
}
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();
}
{
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);
}
}
{
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文档到服务器
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();
}
}
{
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();
}
}