我正在编写一个应用程序,它可以读取RSS源并将项目放在地图上。 我只需要从这个字符串中读取纬度和长数: http://www.digitalvision.se/feed.aspx?isAlert=true&lat=53.647351&lon=-1.933506 。这包含在链接标签
中我是一个编程菜鸟,但是我使用Linq to XML在C#/ Silverlight中写这个。
解析此文本在解析时或解析后被提取并发送到类来执行此操作? 非常感谢您的帮助。
EDIT。我打算尝试在这个
上做一个正则表达式这是我需要在此代码中的某个地方集成正则表达式的地方。我需要从Link元素中取lat和long并将其分成两个我可以使用的变量(结果是创建列表的foreach循环的一部分。)
var events = from ev in document.Descendants("item")
select new
{
Title = (ev.Element("title").Value),
Description = (ev.Element("description").Value),
Link = (ev.Element("link").Value),
};
问题是我不太确定在哪里放正则表达式(一旦我弄清楚如何正确使用正则表达式!:-))
答案 0 :(得分:1)
如果您只需要Lat和Lon值,并且Feed只是一个大的XML字符串,那么您可以使用正则表达式完成所有操作。
var rssFeed = @"http://www.xxxxxxxxxxxxxx.co.uk/map.aspx?isTrafficAlert=true&lat=53.647351&lon=-1.933506
http://www.xxxxxxxxxxxxxx.co.uk/map.aspx?isTrafficAlert=true&lat=53.647352&lon=-1.933507
http://www.xxxxxxxxxxxxxx.co.uk/map.aspx?isTrafficAlert=true&lat=53.647353&lon=-1.933508
http://www.xxxxxxxxxxxxxx.co.uk/map.aspx?isTrafficAlert=true&lat=53.647354&lon=-1.933509";
var regex = new Regex(@"lat=(?<Lat>[+-]?\d*\.\d*)&lon=(?<Lon>[+-]?\d*\.\d*)");
var latLongPairs = new List<Tuple<decimal, decimal>>();
foreach (Match match in regex.Matches(rssFeed))
{
var lat = Convert.ToDecimal(match.Groups["Lat"].Value);
var lon = Convert.ToDecimal(match.Groups["Lon"].Value);
latLongPairs.Add(new Tuple<decimal, decimal>(lat, lon));
}
答案 1 :(得分:1)
试试这个
var url = "http://www.xxxxxxxxxxxxxx.co.uk/map.aspx?isTrafficAlert=true&lat=53.647351&lon=-1.93350";
var items = url.Split('?')[1]
.Split('&')
.Select(i => i.Split('='))
.ToDictionary(o => o[0], o => o[1]);
var lon = items["lon"];
var lat = items["lat"];