C# 从XML标记解析和拆分文本

C# 从XML标记解析和拆分文本,c#,xml,silverlight,silverlight-4.0,windows-phone-7,C#,Xml,Silverlight,Silverlight 4.0,Windows Phone 7,我收到一个XML RSS提要。其中一个标记如下所示: <georss:point>55.0794503724671 -3.31266344234773</georss:point> XNamespace geoRssNs = "http://whatever/url/it/is"; var points = from point in parentElement.Elements(geoRssNs + "point") let values

我收到一个XML RSS提要。其中一个标记如下所示:

<georss:point>55.0794503724671 -3.31266344234773</georss:point>
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)
             };
}
}

我突然意识到这不是真正的XML——它只是普通的字符串处理。例如,它可以是这样的:

<georss:point>55.0794503724671 -3.31266344234773</georss:point>
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)
             };

像这样的怎么样

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));

当geo:Point中的值与georss:Point中编码的值相同时,为什么要这样做呢???嗨,Anthony,我在本例中阅读的特定xml文档没有像上面的编码示例那样具有单独lat/long的geo:Point值谢谢,今晚我将对此进行演示。嗨,Jon,谢谢你的回答。嗨,乔恩,我一直在玩这个。一个问题是它不喜欢“价值观”这个词。错误是:错误1“System.Xml.Linq.XElement”不包含“Values”的定义,并且找不到接受“System.Xml.Linq.XElement”类型的第一个参数的扩展方法“Values”(是否缺少using指令或程序集引用?)C:\Users\Dan\Desktop\QuakeML\MainPage.xaml.cs 57 45QuakeML@Dan:对不起,这应该是价值观而不是价值观。嗨,乔恩,很抱歉打扰你,但我有问题,因为我在这里缺乏知识。这就是我如何设置您建议的代码的方法。。但我得到的错误是,ParentElement在当前上下文中不存在?。。。。。var events=from ev in parentElement.Elements(georss+“point”)让value=ev.value.Split(new[]{''},2)嗨,迪安,谢谢你的回答。你能解释一下这是如何工作的吗,特别是选择两个值的第4/5行?首先,你将文本拆分为georss:point的值,用空格字符表示,得到两个字符串,然后在下一行中使用它们来创建一个新的地理坐标对象我不相信你可以从字符串中构建一个地理坐标。。。您需要解析它们。虽然很接近,但a)正如Jon所说,您需要将每个值解析为一个双精度值,b)图钉采用Microsoft.Maps.MapControl.Location类型作为其
Location
属性,而不是地理坐标。