2010-12-31 12 views
1

Versuchen, hier mit Regex herumspielen, mein erster Versuch. Ich versuche, einige Zahlen aus dem Inhalt eines XML-Tags zu extrahieren. Der Inhalt sieht wie folgt aus:C# Regex auf XML-String-Handler

www.blahblah.se/maps.aspx?isAlert=true & lat = 51,958855252721 & lon = -,517657021473527

ich die lat und lange numerische vales aus jedem Link extrahieren müssen . Sie werden immer die gleiche Anzahl von Zeichen haben, und das Lon kann ein "-" Zeichen haben oder nicht.

Ich dachte darüber nach, wie dies unten tun (es offensichtlich nicht richtig obwohl): (Die Zeichenfolge in Frage ist in dem "link" Tag):

   var document = XDocument.Load(e.Result); 
      if (document.Root == null) 
      return; 

      var events = from ev in document.Descendants("item1") 
        select new 
        { 
         Title = (ev.Element("title").Value), 
         Latitude = Regex.xxxxxxx(ev.Element("link").Value, @"lat=(?<Lat>[+-]?\d*\.\d*)", String.Empty), 
         Longitude = Convert.ToDouble(ev.Element("link").Value), 

        }; 

     foreach (var ev in events) 
     { 
do stuff 
    } 

Vielen Dank!

Antwort

1

Versuchen Sie folgendes:

Regex.Match(ev.Element("link").Value, @"lat=(?<Lat>[+-]?\d*\.\d*)").Groups[1].Value 

Beispiel:

string ev = "www.blahblah.se/maps.aspx?isAlert=true&lat=51.958855252721&lon=-0.517657021473527"; 
string s = Regex.Match(ev, @"lat=(?<Lat>[+-]?\d*\.\d*)").Groups[1].Value; 

Ergebnis:

"51.958855252721" 
0

Wenn Sie eine URL mit GET-Parameter haben, würde ich eine Bibliothek zu finden versucht sein, dass kann das für Sie auseinander ziehen, anstatt Regexps zu verwenden. Es kann Kantenfälle geben, die Ihre Regexp nicht behandelt, aber eine Bibliothek, die für den bestimmten Zweck gebaut wurde, würde damit umgehen (es hängt natürlich von der Menge der Daten ab, die Sie parsen müssen und wie gut sie natürlich ist).

+0

Hallo Brian, leider habe ich nur Zugriff auf die Links mit den eingebetteten Daten, die ich brauche. –