Jump to content

C# parsowanie html


michals9

Recommended Posts

Mam pewien problem.

Chciałbym zrobić parsowanie formularzy zawartych w pliku html bez użycia wyrażeń regularnych.

Chodzi mi o uzyskanie zmiennej string, zawierającej <input... />, oraz <select></select> wraz z zawartością.

Z selectami udało mi się to, mam natomiast problem z inputami.

Najpierw pobieram do zmiennej formy wszystkie formularze. Potem zaś:

 

          do
                       {
                               a = formy.IndexOf("<input");
                               b = formy.IndexOf("/>");
                               if ((b + 9) < a) 
                               {
                                   MessageBox.Show("Błąd");
                                   goto Koniec;
                               }
                               else
                               {
                                   input = input + formy.Substring(a, ((b + 2) - a));
                                   formy = formy.Remove(0, (b + 2)); // Ponieważ przeszukiwanie zmiennej formy
                                                                     // przebiega od jej początku za każdym razem
                                                                     // usuwany jest tekst, który został dodany
                                                                     // do input
                               }

                       } while (formy1.Contains("<input"));

 

input to zmienna string zawierająca tekst po parsowaniu.

Problem polega na tym, że w pliku znajdują się również znaczniki <input... >(zamknięte bez prawego ukośnika).

 

Funkcja IndexOf() jakby ich nie widziała, poza tym ich obecność powoduje że zmienna b bywa mniejsza od zmiennej a.

 

To z kolei powoduje wywołanie funkcji Substring() z długością łańcucha mniejszą od zera.

Byćmoże są w Visual C# 2008 Express Edition funkcje wspomagające parsowanie html, ale za krótko w tym siedzę żeby o

 

tym wiedzieć.

 

Pomóżcie jak możecie :(

Link to comment
Share on other sites

Użyłem wyrażeń regularnych aby pobrać tagi html i mam obecnie taki łańcuch string:

 

KOD<select name="validMONTH" class="entryField"><option value="01"><option value="02"><option value="03"><option value="04"><option value="05"><option value="06"><option value="07"><option value="08"><option value="09"><option value="10"><option value="11"><option value="12"><select name="validYEAR" class="entryField"><option value="07"><option value="08"><option value="09"><option value="10"><option value="11"><option value="12"><option value="13"><option value="13"><option value="13"><option value="13"><option value="13"><option value="13"><option value="13"><option value="13"><option value="13"><option value="13"><input type="hidden" name="trans_id"

value="MDI6P4eMbm1eYYzaXLg478FTixc=" readonly="readonly" /><input name="trans" type="hidden" value="sto" /><input type="hidden" name="extra" value="cacao" >

 

Jeśli chodzi o wyrażenia regularne jestem jednak zielony.

Potrzebuję wyrażenia, za pomocą którego mogę pobrać z tego łańcucha wartości właściwości: name, value.

Muszę to skończyć do jutra, więc byłbym niezmiernie wdzięczny za jakąś podpowiedz.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...