我正在接收XML RSS提要。其中一个标签看起来像这样:
<georss:point>55.0794503724671 -3.31266344234773</georss:point>
我需要一种简单的方法将这两个lat和long值提取为单独的值[作为我的其他XML读取foreach循环的一部分..]。
编辑:
我现在正在尝试:
private void OnOpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
var document = XDocument.Load(e.Result);
if (document.Root == null)
return;
var georss = XNamespace.Get("http://www.georss.org/georss");
var events = from ev in document.Descendants("item")
//how can I define the below for the Value.split?
//var points = from point in parentElement.Elements(geoRssNs + "point")
let values = ev.Value.Split(' ')
select new
{
Latitude = double.Parse(values[0], CultureInfo.InvariantCulture),
Longitude = double.Parse(values[1], CultureInfo.InvariantCulture),
Title = (ev.Element("title").Value),
Description = (ev.Element("description").Value),
PubDate = (ev.Element("pubDate").Value),
};
//Add pushpin here
} }
答案 0 :(得分:5)
这让我觉得这不是真正的XML - 它只是正常的字符串处理。例如,它可能是这样的:
XNamespace geoRssNs = "http://whatever/url/it/is";
var points = from point in parentElement.Elements(geoRssNs + "point")
let values = point.Value.Split(' ')
select new
{
Latitude = double.Parse(values[0], CultureInfo.InvariantCulture),
Longitude = double.Parse(values[1], CultureInfo.InvariantCulture)
};
答案 1 :(得分:2)
这样的事情
XDocument.Load(e.Result)
.Descendants("item")
.Descendants("georss:point")
.Select(v => v.Value.Split(' '))
.Select(ll => new GeoCoordinate{Longitude = ll[0], Latitude = ll[1]})
.Select(g => new Pushpin{
Location = g,
Background = (Brush)MediaTypeNames
.Application
.Current
.Resources["PhoneAccentBrush"]})
.ToList()
.ForEach(p => QuakeLayer.AddChild(p, p.Location));