Hi vb-paradise community,
hab folgendes problem, wollte mit regex den titel und den artist eines radiosender auslesen, von einer xml datei
hier ist mal mein erster versuch
der link zur xml datei ist tray.technobase.fm/radio.xml
Ausschnitt aus Quellcode der xml Datei:
so die Zeile <name>TechnoBase</name> kommt im ganzen dokument nur einmal vor, die anderen ändern sich teilweise
die Zeile <link>http://www.TechnoBase.FM/member/10</link> bleibt bis technobase.fm unverändert! also folgendes <link>http://www.TechnoBase.FM
Diese beiden Zeilen kommen auch nur einmal im gesamten xml dokument vor.
so nun wollte ich den artist also "Cascada" und den titel des songs also "Evacuate The Dancefloor" in eine textbox laden. (Nur als Beispiel, Artist und Titel ändern sich ständig)
wollte es so versuchen das er erstmal Cascada lädt
Suchmuster = "(?<=<name>TechnoBase</name>)(\s* <moderator>.+>\s*[^<]*</artist>){2}"
Ging aber nicht
habs auch mal mit:
Suchmuster = "(?<= <link>http://www.TechnoBase.FM.+>)(/*<picture>.+>\s*[^<]*</artist>){2}"
probiert ging aber auch nicht.
Was habe ich falsch gemacht bzw was muss ich dann noch ergänzen damit ich den Artist und den Titel in eine TextBox laden kann?
Das ganze sollte dann in einer textbox so erscheinen "Cascada - Evacuate The Dancefloor"
habe eigtl alles gecheckt also muss mein suchmuster falsch sein!
könntet ihr mir beim suchmuster helfen?
bräuchte wirklich dringend eure hilfe
mfg Mike
hab folgendes problem, wollte mit regex den titel und den artist eines radiosender auslesen, von einer xml datei
hier ist mal mein erster versuch
VB.NET-Quellcode
- Option Explicit On
- Option Strict On
- Imports System.Text.RegularExpressions
- Public Class Form1
- Const WEBADRESSE As String = "http://tray.technobase.fm/radio.xml" ' <--- ANPASSEN
- Dim rgx As Regex
- Dim HTMLQuelltext As String
- Dim SeiteGeladen As Boolean
- Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
- Dim Suchmuster As String
- Dim Trefferliste As MatchCollection
- Dim Treffer As String
- Dim Pos As Integer
- SeiteNeuLaden()
- ' Bestandteile des Suchmusters:
- ' (?<= ) Wenn Kombination gefunden, dann LookBack/Zurückschauen (?<= ), ob ...
- ' id=""Content_Show""> ... id="Content_Show" am Anfang steht ...
- ' \s* ... gefolgt von keinem oder mehreren Spaces bis was anders kommt ...
- ' <div style= ... gefolgt von <div style= ...
- ' .+> ... gefolgt von einem oder mehreren beliebigen Zeichen bis > kommt ...
- ' [^<]* ... gefolgt von keinem oder mehreren belibigen Zeichen (außer <) bis </div> kommt ...
- ' {2} ... insgesamt 2-mal muß der Suchstring in (....) passen
- ' Wenn alle diese Überprüfungen erfüllt sind, dann ist die Kombination ein gültiger Treffer
- Suchmuster = "(?<= <link>http://www.TechnoBase.FM.+>)(/*<picture>.+>\s*[^<]*</artist>){2}"
- ' Optionen: Groß-/Kleinschreibung ignorieren, Mehrzeiliger Text
- rgx = New Regex(Suchmuster, RegexOptions.IgnoreCase _
- Or RegexOptions.Multiline)
- Trefferliste = rgx.Matches(HTMLQuelltext) ' Alle Treffer ermitteln
- If Trefferliste.Count = 0 Then ' Trefferliste enthält keine Treffer
- TextBox1.Text = "Error"
- ElseIf Trefferliste.Count = 1 Then ' Trefferliste enthält genau 1 Treffer
- Treffer = Trefferliste.Item(0).ToString.Trim ' Spaces am Anfang und Ende entfernen
- Pos = Treffer.LastIndexOf("</div>")
- Treffer = Treffer.Remove(Pos) ' Letztes </div> entfernen
- Pos = Treffer.LastIndexOf(">") + 1
- Treffer = Treffer.Substring(Pos).Trim ' Alles ab dem letzten > nehmen
- TextBox1.Text = (Treffer)
- Else ' Trefferliste enthält mehr als 1 Treffer
- TextBox1.Text = "Mehr als 1 Tag gefunden"
- End If
- End Sub
- ' ********************************************************************************
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
- Handles MyBase.Load
- 'WebBrowser1.Visible = False
- SeiteNeuLaden()
- End Sub
- ' ********************************************************************************
- Private Sub SeiteNeuLaden()
- SeiteGeladen = False
- Try
- WebBrowser1.Navigate(WEBADRESSE) ' Seite aus den Internet laden
- Catch ex As Exception
- TextBox1.Text = "Fehler beim Laden"
- End Try
- Do Until SeiteGeladen = True ' Warten bis vollständig geladen
- System.Windows.Forms.Application.DoEvents()
- Loop
- End Sub
- ' ********************************************************************************
- Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, _
- ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) _
- Handles WebBrowser1.DocumentCompleted
- HTMLQuelltext = WebBrowser1.DocumentText ' Quellcode in Variable speichern
- SeiteGeladen = True
- 'MessageBox.Show(HTMLQuelltext.Length.ToString) ' Nur für Testzwecke (Länge des Quelltextes)
- End Sub
- End Class
der link zur xml datei ist tray.technobase.fm/radio.xml
Ausschnitt aus Quellcode der xml Datei:
Quellcode
- <radio>
- <name>TechnoBase</name>
- <moderator>G4bby</moderator>
- <show>We aRe oNe! (G4bsTyLe Generation Cut)</show>
- <style>HandsUp</style>
- <starttime>18</starttime>
- <endtime>20</endtime>
- <link>http://www.TechnoBase.FM/member/10</link>
- <picture>http://profil.technobase.eu/profil_small10-5.jpg</picture>
- <artist>Cascada</artist>
- <song>Evacuate The Dancefloor</song>
- <release>http://www.TechnoBase.FM/release/cascada/3150/evacuate-the-dancefloor</release>
so die Zeile <name>TechnoBase</name> kommt im ganzen dokument nur einmal vor, die anderen ändern sich teilweise
die Zeile <link>http://www.TechnoBase.FM/member/10</link> bleibt bis technobase.fm unverändert! also folgendes <link>http://www.TechnoBase.FM
Diese beiden Zeilen kommen auch nur einmal im gesamten xml dokument vor.
so nun wollte ich den artist also "Cascada" und den titel des songs also "Evacuate The Dancefloor" in eine textbox laden. (Nur als Beispiel, Artist und Titel ändern sich ständig)
wollte es so versuchen das er erstmal Cascada lädt
Suchmuster = "(?<=<name>TechnoBase</name>)(\s* <moderator>.+>\s*[^<]*</artist>){2}"
Ging aber nicht
habs auch mal mit:
Suchmuster = "(?<= <link>http://www.TechnoBase.FM.+>)(/*<picture>.+>\s*[^<]*</artist>){2}"
probiert ging aber auch nicht.
Was habe ich falsch gemacht bzw was muss ich dann noch ergänzen damit ich den Artist und den Titel in eine TextBox laden kann?
Das ganze sollte dann in einer textbox so erscheinen "Cascada - Evacuate The Dancefloor"
habe eigtl alles gecheckt also muss mein suchmuster falsch sein!
könntet ihr mir beim suchmuster helfen?
bräuchte wirklich dringend eure hilfe
mfg Mike
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „NscMike“ ()