michals9 Posted December 19, 2009 Report Share Posted December 19, 2009 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 More sharing options...
Force Posted December 19, 2009 Report Share Posted December 19, 2009 To szukaj znacznika ">" od a+1. Nagłówek IndexOf: link Baza tysięcy lotnisk: http://airportsbase.com Link to comment Share on other sites More sharing options...
michals9 Posted December 20, 2009 Author Report Share Posted December 20, 2009 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 More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.