Parsowanie pliku html w celu uzyskania tekstu z tabeli.

0

Cześć!
Sytuacja jest taka że program do zwrotu akcyzy wypluwa plik w postaci html gdzie zawarte są potrzebne mi dane w tabeli. Jest to kilkaset wierszy a nazwy kolumn to imię nazwisko numer konta, kwota, adres itd. Chodzi o to żeby stworzyć z użyciem tych danych plik masowych przelewów bankowych w formacie Elixir-O. Napisałem prosty program okienkowy który pobiera dane z pliku tekstowego wiersz po wierszu, następnie uzupełnia o odpowiednie brakujące pola w wierszu i zapisuje do nowego pliku. Wtedy można już importować do banku taki plik. Działa ale jest pewna niedogodność, trzeba z wyświetlonego w przeglądarce pliku html, ręcznie zaznaczać tekst w tabeli, skopiować, wkleić do notatnika, zapisać do pliku i dopiero otworzyć w moim programie który przetworzy taki plik do odpowiedniej postaci. Jaki by był w miarę prosty sposób aby odczytać z pliku html tylko tekst wyświetlany w tabeli, bez żadnych znaczników? Jest dużo bibliotek do przetwarzania xml, html ale jestem początkujący i nie bardzo wiem jak ich użyć. Można by tworzyć wiersze z danymi odczytywanymi po znacznikach TR,TD, coś w tym stylu...

0

Bibliotek uzywasz tak jak innych rzeczy (z np biblioteki standardowej). Nie rozumiem problemu.

Moze powiedz z czym sobie nie radzisz to bedziemy mogli pomoc

0

możesz skorzystać z https://jsoup.org/

0
trojanus napisał(a):

możesz skorzystać z https://jsoup.org/
właśnie próbuje korzystać z jsoup. Coś robię źle bo liczba komórek w wierszu jest zero a powinna być 4 w wierszu:

                                        
				Document doc;
					File plikHtml = new File(filePatch);

					try {
						doc = Jsoup.parse(plikHtml, "UTF-8");
					
					
					   ArrayList<String> wierszPrzelewu = new ArrayList<>();
					    Element table = doc.select("table").get(1); //select the second table.
					    Elements rows = table.select("tr");
					   
					  
					    for (int i = 0; i < rows.size(); i++) //select first row.
					    { 
					        Element row = rows.get(i);
					        Elements cols = row.select("td");
					      
					        
					        int j=0;
					      
					            do {
					            		
					                   wierszPrzelewu.add(cols.get(j).text());
					                
					                    j++;
					                    
					  
					            }
					            
					            while (j<cols.size());
					            
					        }
							
					}
					catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}

kod pliku html, skrócony do kilku wierszy bo oryginalnie ma 2019 wystąpień :

<html><head><meta charset="WINDOWS-1250"> <style type="text/css">td.text { mso-number-format:\@; }</style> </head><body> <font size="+1"> <style type="text/css"> td.tcol001 { mso-number-format:\@; } td.tcol002 { mso-number-format:\@; } td.tcol003 { mso-number-format:\@; } td.tcol004 { mso-number-format:0\.00; } </style>
Program: Zwrot Akcyza (AK w.7.0.2.5) /Druk: TAK-AK7 UG Wysokie, dnia: 2019.11.22

Lista wypłat przelewowych do realizacji za okres 2019 II
</pre>

Lp Wnioskodawca Konto Kwota
1 Wilczyński Grzegorz Józef WILCZYŃSKI GRZEGORZ 491,19
  23-145 Wysokie    
  Kajetanów 25 SBP PIASKI O/WYSOKIE  
    158689000797075109856240010  
2 Bielak Tadeusz BEDNARZ TADEUSZ JANUSZ 397,56
  23-145 Wysokie    
  Nowy Dwór 37 SBP PIASKI  
    858689000796982456130000010  
3 Brydala Sylwia BRYDALA SYLWIA 245,89
  23-145 Wysokie    
  Giełczew Pierwsza 108 SBP PIASKI  
    198689000728574779830000010  

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