HTML-koodi, josta pitäisi saada tietoja parseroitua, näyttää tuonnäköiseltä:
<td class="title"> <h4> <strong>Lihavoitu teksti</strong> Tavallinen teksti </a> </h4> <span class="date">Päivämäärä</span> </td> <td class="format">Formaatti</td>
Ja tuosta pitäisi saada parseroitua tagien välissä olevat tekstit.
Koodini näyttää tältä:
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using Microsoft.Phone.Controls; using HtmlAgilityPack; namespace DEMO { public partial class MainPage : PhoneApplicationPage { // Constructor public MainPage() { InitializeComponent(); } private void Nouda(object sender, RoutedEventArgs e) { string etsittava; etsittava = textBox1.Text; HtmlWeb.LoadAsync("http://www.google.fi/", (s, args) => { Tulokset.Text = String.Join(Environment.NewLine, args.Document.DocumentNode.Descendants("a"). Select( x => x.InnerText).ToArray()); }); } } }
Nyt tarvisin vähän apua, miten tuo homma kannattaisi ratkaista. Eli html-sivulta etsitään textboxiin kirjoitettu teksti, ja tulostetaan tagien välissä olevat tekstit näytölle.
Mod. lisäsi kooditagit!
Haiskahtaa vähän huonolta suunnittelulta kun on tarvetta tuollaiselle. Olisko XML sopivampi ja System.Xml? Mutta.. Jos ymmärsin oikein sinun pitää parsia tagien väliset stringit talteen?
private void testaus() { string sisalto = "<td class=\"title\"><h4><strong>Lihavoitu teksti</strong>Tavallinen teksti</a></h4><span class=\"date\">Päivämäärä</span></td><td class=\"format\">Formaatti</td>"; try { string hakuTulos = haeValista("<strong>", "</strong>", sisalto); //Jotain } catch (Exception ex) { //Jotain.. } finally { //Jotain.. } } public static string haeValista(string strAlku, string strLoppu, string strTeksti) { string[] result = { string.Empty, string.Empty }; int iIndexOfBegin = strTeksti.IndexOf(strAlku); if (iIndexOfBegin != -1) { strTeksti = strTeksti.Substring(iIndexOfBegin + strAlku.Length); int iEnd = strTeksti.IndexOf(strLoppu); if (iEnd != -1) { result[0] = strTeksti.Substring(0, iEnd); } else { throw new Exception("Lopputagia ei löytynyt."); } } else { throw new Exception("Alkutagia ei löytynyt."); } return result[0]; } } }
No joo, eli kyseessä olisi "musiikkitarkastaja" joka tarkistaa web-sivulta, onko käyttäjän syöttämältä yhtyeeltä tulossa uusia julkaisuja. Tavoite olisi, että kun käyttäjä syöttää yhtyeen nimen, ohjelma etsii ja tulostaa näytölle kyseisen yhtyeen (uuden) julkaisun nimen, formaatin, ja päivämäärän. Mikäli uusia ei ole tulossa, annetaan ilmoitus "Ei löydy" jne.
Lihavoitu teksti on source html koodissa yhtyeen/esittäjän nimi, ja tavallinen H4 on julkaisun nimi. Ne siis pitäisi saada sieltä parsittua ruutuun.
Aihe on jo aika vanha, joten et voi enää vastata siihen.