Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

[C#/WP7] HTML data parsen tot werkbare data (XML?)

Pagina: 1
Acties:

  • Novermars
  • Registratie: maart 2011
  • Laatst online: 11-01-2016
Hoi,

Voor een klein projectje van mezelf ben ik bezig met een app te schrijven voor Windows Phone 7. De hoofdfunctionaliteit van de app is het halen van een HTML table met roosterwijzigingen van de school website en die om te zetten naar een lijst.
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<table style="width: 421px;" border="0" cellspacing="0" cellpadding="0"><colgroup><col width="97" /></colgroup><colgroup><col width="25" /></colgroup><colgroup><col width="37" /></colgroup><colgroup><col width="25" /></colgroup><colgroup><col width="49" /></colgroup><colgroup><col width="25" /></colgroup><colgroup><col width="44" /></colgroup><colgroup><col width="54" /></colgroup><colgroup><col width="65" /></colgroup>
<tbody>
<tr height="17">

<td class="xl76" width="97" height="17">ma 20 feb</td>
<td class="xl69" width="25"> </td>
<td class="xl78" width="37"> </td>
<td class="xl69" width="25"> </td>
<td class="xl69" width="49"> </td>
<td class="xl69" width="25"> </td>
<td class="xl69" width="44"> </td>
<td class="xl69" width="54"> </td>
<td class="xl69" width="65"> </td>

</tr>
<tr height="17">
<td class="xl77" height="17">Absent MD:</td>
<td class="xl69" colspan="6">Brr, Jan, Brk:8+9,<br />  Sie:1-5, Hui</td>
<td class="xl70"> </td>
<td class="xl70"> </td>
</tr>

(....)

</tr>
<tr height="17">
<td class="xl73" height="17">H5</td>
<td class="xl74"> </td>
<td class="xl81">5+6</td>
<td class="xl74"> </td>
<td class="xl74">netl</td>
<td class="xl74"> </td>
<td class="xl74">Roo</td>

<td class="xl74">218</td>
<td class="xl69"> </td>
</tr>
</tbody>
</table>

Met behulp van deze code haal ik de HTML en binnen verwijder ik alle HTML die ik niet nodig heb:
C#:
1
2
3
WebClient client = new WebClient();
            client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
            client.DownloadStringAsync(new Uri("http://veenlandencollege.nl/rooster-mijdr.php"));


C#:
1
2
3
4
if (e.Error == null)
            {
                webClientTextBlock.Text = e.Result;
            }


C#:
1
2
3
4
5
6
7
8
9
10
11
string html = webClientTextBlock.Text;
            string searchString = "<div class=\"inside\" id=\"edit\">"; //hierna begint de table
            string searchString2 = "</div><p>&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"#\" onclick="; //hierna eindigt de table
            int firstChr = html.IndexOf(SearchString);

            int lastChr = html.IndexOf(searchString2);
            int last = html.Length;
            MessageBox.Show("Found at : " + firstChr + "," + last + "," + lastChr);
            string NewString = html.Substring(firstChr, last - lastChr);

            webClientTextBlock.Text = NewString;

De bedoeling is nu dat dit nu zo'n tabel wordt:
http://i236.photobucket.com/albums/ff227/megareus12/table.png

Mijn vraag is nu hoe ik de HTML omzet naar een bruikbaardere code daarna een tabel maak.

Ik ben nog een beginner met programmeren en zie dit meer als een hobby en om mijn mede leerlingen te helpen :) Google heeft me ook niet geholpen, de meeste oplossingen hebben bepaalde classes nodig die WP7 niet heeft.

Alvast bedankt :)

  • creator1988
  • Registratie: januari 2007
  • Laatst online: 13:02
Use HtmlAgilityPack (http://htmlagilitypack.codeplex.com/discussions/225113 for workaround onder WP7), dan xpath of LINQ2XML'en om de data eruit te krijgen.

  • Novermars
  • Registratie: maart 2011
  • Laatst online: 11-01-2016
Nu ga ik vast en zeker een domme vraag stellen, maar hoe include ik die bestanden in mijn project? Of is het de bedoeling dat ik gewoon elk .cs in mijn project kopieër?

  • Styxxy
  • Registratie: augustus 2009
  • Laatst online: 16:26
quote:
Novermars schreef op maandag 20 februari 2012 @ 19:13:
Nu ga ik vast en zeker een domme vraag stellen, maar hoe include ik die bestanden in mijn project? Of is het de bedoeling dat ik gewoon elk .cs in mijn project kopieër?
Gewoon reference leggen naar die DLL (en best ook laten kopiëren, maar dat is normaal standaard).

  • Novermars
  • Registratie: maart 2011
  • Laatst online: 11-01-2016
Dat dacht ik dus ook al, maar in het bestand dat ik moest downloaden voor WP7 zit geen DLL. In de normale zit wel een DLL maar die kan ik niet referencen omdat die niet compitabel is met WP7.

<edit> Opeens bedacht me dat ik die .cs files gewoon moet compilen tot een .DLL 7(8)7 </edit>

<edit2> Lukt niet =/ Krijg een error dat ik een assembly mis. Iemand ervaring met compilen via CMD? </edit2>

Novermars wijzigde deze reactie 20-02-2012 21:14 (36%)


  • Styxxy
  • Registratie: augustus 2009
  • Laatst online: 16:26
quote:
Novermars schreef op maandag 20 februari 2012 @ 20:09:
<edit2> Lukt niet =/ Krijg een error dat ik een assembly mis. Iemand ervaring met compilen via CMD? </edit2>
Why would you do that?

Solution openen in Visual Studio. Trouwens, normaal krijg je wel errors van wat er mist.

  • Novermars
  • Registratie: maart 2011
  • Laatst online: 11-01-2016
quote:
Styxxy schreef op maandag 20 februari 2012 @ 21:25:
[...]

Why would you do that?

Solution openen in Visual Studio. Trouwens, normaal krijg je wel errors van wat er mist.
Als ik hem open in VS2010 for WP compiled hij hem nogsteeds als normale C# .DLL.

Pff, ik voel me echt een noob hier. Waarom wou ik programmeren ook al weer als hobby? :p

  • alex3305
  • Registratie: januari 2004
  • Laatst online: 18-09 23:17
Ik weet niet of het op WP7/C# ook gaat, maar je zou ook gewoon de HTML data kunnen behandelen als XML data. Dat doe ik althans altijd in PHP, Android en iOS met juiste HTML en werkt voor mijn projecten gewoon goed.

alex3305 wijzigde deze reactie 20-02-2012 22:06 (6%)


  • alwinuzz
  • Registratie: april 2008
  • Laatst online: 14:43
Je kan ook NuGet gebruiken. In de NuGet package van HtmlAgilityPack zit een kant en klare versie voor WP.

alwinuzz wijzigde deze reactie 21-02-2012 00:31 (6%)


  • evolution536
  • Registratie: maart 2009
  • Laatst online: 02-04 17:04

evolution536

besh besh

Je kunt proberen de HTML in een XDocument te laden, al denk ik dat dit niet gaat lukken omdat de HTML code geen root element heeft enzo. Maar toch, ik zou zeggen: probeer het is.
C#:
1
2
XDocument doc = new XDocument();
doc.Load("<bestandnaam>");<

Ik programmeer zelf ook voor WP7, en ik ben wel met XML bezig geweest. Dit is best wel makkelijk. Je kunt er ook meer tijd aan besteden en je eigen parses schrijven voor de specifieke HTML. In principe krijg je gewoon een string terug die je kunt splitsen, en waarin je kunt zoeken, etc.

Het importeren van een DLL in je project is makkelijk. Rechtsklik op "References" in je Solution Explorer: "Add Reference". Klik browse, en zoek de DLL die je wilt hebben.

ohja, programmeren is ook mijn hobby :+ ;)

evolution536 wijzigde deze reactie 21-02-2012 09:07 (3%)

Pagina: 1


Apple iPhone X Google Pixel XL 2 LG W7 Samsung Galaxy S8 Google Pixel 2 Sony Bravia A1 OLED Microsoft Xbox One X Apple iPhone 8

© 1998 - 2017 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Hardware.Info de Persgroep Online Services B.V. Hosting door True

*