Plan lekcji

0

Witam,
Planuję napisać aplikację, która będzie wyświetlać plan lekcji każdego nauczyciela lub klasy wymienionych na stronie z planem. Program ma wczytywać wartości ze strony www, pobierać tylko sam tekst i wklejać wartości do nowo utworzonej tabeli. Zamierzam pisać ten program w WPF.
Myślę, iż doradzicie, jakich funkcji powinienem użyć lub podać przykładowy kod.

0

strona niech wypluwa xml, czytanie ze strony w c# jest banalne łatwo znajdziesz, a odczyt xml trochę trudniejszy ale też znajdziesz, a wczytać do tabelki, yyyy no comment.

0

Mi się wydaje że odczyt xml/json jest łatwiejszy niż wyciąganie tabeli ze strony.
Moje pierwsze pytanie brzmi: w czym jest pisana strona? I czy masz możliwość zmieniać jej kod/zlecać zmiany twórcy?

0

Strona była pisana w HTML-u + JavaScript;
na chwilę obecną nie mam możliwości zmieniania kodu strony.

EDIT:
Wygląda ona następująco: jest strona .../plan , na której znajdują się pod strony z klasami, nauczycielami oraz z salami.
Plan lekcji dla danej klasy jest na podstronach: http://przykład.com/plan/plany/o1.html - pierwsza klasa, http://przykład.com/plan/plany/o2.html - druga klasa itd.

Nauczyciele są ustawieni na podstronach: http://przykład.com/plan/plany/n1.html -> n2.html -> itd.

Dana podstrona ma mniej więcej taką konstrukcję:

<table border="0" cellpadding="10" cellspacing="0">
<tr><td colspan="2">
<table border="1" cellspacing="0" cellpadding="4" class="tabela">
<tr>
<th>Nr</th>
<th>Godz</th>
<th>Poniedziałek</th>
<th>Wtorek</th>
<th>Środa</th>
<th>Czwartek</th>
<th>Piątek</th>
</tr>
<tr>
<td class="nr">0</td>
<td class="g"> 7:05- 7:50</td>
<td class="l">&nbsp;</td>
<td class="l">&nbsp;</td>
<td class="l">&nbsp;</td>
<td class="l">&nbsp;</td>
<td class="l">&nbsp;</td>
</tr>
<tr>
<td class="nr">1</td>
<td class="g"> 8:00- 8:45</td>
<td class="l">&nbsp;</td>
<td class="l">&nbsp;</td>
<td class="l"><a href="o4.html" class="o">1D</a> <span class="p">matematyka</span> <a href="s2.html" class="s">105</a><br></td>
<td class="l">&nbsp;</td>
<td class="l"><a href="o5.html" class="o">1E</a> <span class="p">matematyka</span> <a href="s2.html" class="s">105</a><br></td>
</tr>
0

No to niestety będziesz się musiał bawić w ręczne parsowanie strony (pewnie przy pomocy Regexów). Nie jest to strasznie trudna robota ale jednak. Mam jeszcze pytanie czy masz czas na naukę przy okazji pisania tego projektu i chcesz poznać dobre praktyki czy chcesz złożyć klasy byle jak na kupę aby działało?

0

Ja chciałbym zapytać kim jest użytkownik docelowy i ilu ich będzie? Ile masz czasu na naukę i przygotowanie tego ?
Moim zdaniem było by Ci o 100000 razy lepiej napisać całość w asp.net mvc, wsadzić wszystko do bazy danych itd. Tak, wiem że to brzmi jak kosmos może czy coś, ale tak nie jest, jest to naprawdę świetne rozwiązanie moim zdaniem i wiem że będzie skalowalne (będziesz chciał mieć później 1000 klas i nauczycieli - no problem :) ). Jeżeli chcesz żeby Ci z tym pomóc to możesz nawet na priv się odezwać.

0

@ne0 zakładam że plan jest generowany przez oprogramowanie za które szkoła wywaliła ciężkie pieniądze. A projekt ma wyświetlić ten sam plan a nie tworzyć program do układania planów na nowo.

0

Czasu nie mam zbyt dużo, bo do 11.06, czyli 10 dni.
Plan jest generowany przez firmę Vulcan.
Program ma być kierowany do przeciętnego ucznia, który szuka nauczyciela i chciałby się dowiedzieć, gdzie będzie miał on lekcje. Wiecie, nie chodzi mi o to, żeby działało dobrze, chodzi mi tylko o to by było takie coś.

Mam jeszcze jedno pytanie do Was: czy trudno byłoby w zaistniałej sytuacji napisać ten program na Windows Phone? Bo widziałem, że C# obsługuje programowanie na ten system.

Liczę na wsparcie ;) mimo tak trudniej sytuacji.

0

Jeżeli zrobisz to przy pomocy klas Regex i WebClient(ewentualnie HttpClient) to zarówno napisanie na Windows Phone jak i w WPF zajmie tyle samo czasu (tyle że WPF na małą skalę łatwiej się dystrybuuje i Debuguje na dużą skalę łatwiej jest z Windows Phone - masz MarketPlace).
Możliwe że ten soft ma jakieś API jednak jest to mało prawdopodobne - zawsze można zadać pytanie producentowi.

0

Znalazłem taki o to kod:

using (WebClient client = new WebClient())
        {
            string content = client.DownloadString("http://www.zse.bydgoszcz.pl/plan/plany/n1.html");

            string text = Regex.Match(content, @"\<title\b[^>]*\>\s*(?<Title>[\s\S]*?)\</title\>", RegexOptions.IgnoreCase).Groups["Title"].Value;
            Console.WriteLine(text);
        }
 

Działa jak na razie w oknie konsolowym, rzeczywiście pobiera dane z kodu źródłowego podstrony.
Nie wiem tylko, jak to w XAML-u umieścić do tabeli, czy znacie może jakiś komponent, dzięki któremu mógłbym to zrobić?
I jeszcze jedno pytanie: Znacie jakąś dobrą stronę, tłumaczącą wyrażenia regularne funkcji Regex - czyli szukanie w kodzie HTML?

0

Poczytaj o databindingu i wzorcu MVVM, można bez tego ale znając to podejście pisze łatwiejszy w interpretacji kod.

0

http://htmlagilitypack.codeplex.com/ -> w miare lekkie i przyjemne z dobra dokumentacja i przykaladami

1 użytkowników online, w tym zalogowanych: 0, gości: 1