powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / тэги ушли на север ! HTMLEditorKit Parser handleStartTag / handleEndTag
1 сообщений из 1, страница 1 из 1
тэги ушли на север ! HTMLEditorKit Parser handleStartTag / handleEndTag
    #33382426
Nagel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Отлаживаю прогу для получения данных из ХТМЛ страниц (преобразование в строковый двухмерный массив - ну а его родимого уже элементарно проанализировать) и встретил интересную особенность. У себя на компе все работает на ура - JRE 1.5, 1.3 (взял из клиентского инстала Oracle), 1.2.
То есть: тэги таблицы (<table>, <tr>, <td>) обрабатываются handleStartTag / handleEndTag.
Довольный собой и проделанной работой, пренес это в хранимую процедуру на Oracle.
Получил следующее: тэги таблицы обрабатываются handleSimpleTag и не всегда - через сайт ЦБ на одной из страниц они вообще не видны (http://www.cbr.ru/currency_base/D_print.asp?date_req=15.11.2005).
По поводу ХМЛ на ЦБ я знаю, но шеф настаивает на разборе ХТМЛ. К тому же это только одна из задач.
Версия Oracle:
Oracle9i Enterprise Edition Release 9.2.0.6.0 – Production
На сервере через System.getProperties().list(System.out); пишет:
java.version=1.3.1 ?!?
В форуме по Oracle мне ничего не ответили (ничего не сказала Золотая Рыбка, махнула хвостом и уплыла в синее море...)
Кто встречался с подобной проблемой ? Может кто уже решил ее другим парсером (врсию Явы на сервере обновить нельзя по условию). Может кто знает какая версия Явы стоит на сервере и почему такой результат ?
Привожу простенький пример:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
 import  java.io.FileInputStream;
 import  java.io.BufferedReader;
 import  java.io.InputStream;
 import  java.io.InputStreamReader;
 import  java.net.HttpURLConnection;
 import  java.net.URL;
 import  javax.swing.text.MutableAttributeSet;
 import  javax.swing.text.html.HTML;
 import  javax.swing.text.html.HTMLEditorKit;
 import  javax.swing.text.html.parser.ParserDelegator;
 import  sun.misc.BASE64Encoder;
 public   class  testparse {
	 public   static   void  main(String[] args) {
		 boolean  l_inet = true;
		 boolean  l_parse = true;
		InputStream is;
		HttpURLConnection l_con =  null ;
		 if  ( l_inet )
		{
			System.getProperties().put("proxySet", "true");
			System.getProperties().put("proxyHost", "999.999.999.999");
			System.getProperties().put("proxyPort", "9999");
		}
		 try 
		{
			 if  ( l_inet )
			{
				String l_host = "http://www.cbr.ru/currency_base/D_print.asp?date_req=15.11.2005";
				URL l_url =  new  URL(l_host);
				l_con = (HttpURLConnection) l_url.openConnection();
				// set auth by proxy
				BASE64Encoder l_enc =  new  BASE64Encoder();
				String l_encUP = l_enc.encode("uswer:passwd".getBytes());
				l_con.setRequestProperty("Proxy-Authorization", "Basic " + l_encUP);
				
				is = l_con.getInputStream();
			}
			 else 
			{
				// may test from file
				is =  new  FileInputStream( "test10.htm" );;
			}
			InputStreamReader isr =  new  InputStreamReader(is);
			BufferedReader br =  new  BufferedReader(isr);
			HTMLEditorKit.ParserCallback callback = 
		    	 new  HTMLEditorKit.ParserCallback () 
		    {
		    	 public   void  handleText( char [] data,  int  pos) 
		    	{
		    		String l_tmp =  new  String(data);
		    		System.out.println( "*text " + l_tmp );
		    	}
		    	 public   void  handleStartTag(HTML.Tag t, MutableAttributeSet a,  int  pos) 
		    	{
		    			System.out.print( " +tag :" + t );
		    			System.out.println( ", atr :" + a );
		    	}
		    	 public   void  handleEndTag(HTML.Tag t,  int  pos) 
		    	{
		    			System.out.println( " -tag :" + t );
		    	}
		    	 public   void  handleSimpleTag(HTML.Tag t, MutableAttributeSet a,  int  pos) 
		    	{
		    			System.out.print( " =stag :" + t );
		    			System.out.println( ", atr :" + a );
		    	}
		    	 public   void  handleError(String errorMsg,  int  pos)
		    	{
//		    		System.out.println( "$error " + errorMsg );
		    	}
		    };
		     if  ( l_parse )
		    {
		    	HTMLEditorKit.Parser parser =  new  ParserDelegator();
		    	parser.parse(br, callback, true);
		    }
		     else 
		    {
		    	String l_line;
		    	 while  ((l_line = br.readLine()) !=  null )
	    			  System.out.println(l_line);
		    }
		    br.close();
			isr.close();
			is.close();
			 if  ( l_inet )
				l_con.disconnect();
		}
		 catch  (Exception e) {e.printStackTrace();}
	}
}
Из Oracle выдается следующее:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SQL> exec testparse
+tag :html, atr :
 +tag :head, atr :
 +tag :title, atr :
*text База данных по курсам валют | Банк России
 -tag :title
 +tag :link, atr :rel=stylesheet type=text/css href=/style.css 
 -tag :link
 -tag :head
 +tag :p, atr :endtag=true src=/images/logo_bigtables.gif href=/ border=0 align=center alt= 
 -tag :p
 -tag :html

PL/SQL procedure successfully completed 
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / тэги ушли на север ! HTMLEditorKit Parser handleStartTag / handleEndTag
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]