Skocz do zawartości

C# parsowanie html


michals9

Polecane posty

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 do komentarza
Udostępnij na innych stronach

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 do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...