imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 24.05.2005, 12:57     # 1
Sam Dark
Member
 
Аватар для Sam Dark
 
Регистрация: 03.07.2003
Адрес: Voronezh, Russia
Пол: Male
Сообщения: 294

Sam Dark МолодецSam Dark МолодецSam Dark Молодец
Question Java. Считать html блоками.

На Java писать только начал.

Задача: считать html блоками (<блок>блок</блок>).

Начал делать так:

Код:
public class block
{
  public static String text;
  public static String type;
  
  public block(String txt, String typ)
  {
    text=txt;
    type=typ;
  }
}
Код:
import java.io.*;

public class blockreader{
  private static boolean flag;
  private static int pos;
  private static char buf;
  public static block block;
  private static InputStream fstream;
  
  public blockreader(String file)  {
    try{
      fstream = new FileInputStream(file);
      pos = 0;
      flag=true;
    }
    catch (FileNotFoundException e){
        System.out.println("File " + file + " not found.");
        flag=false;
    }
  }
  
  public static boolean readblock(){
  if (flag){
    try{
        if (fstream.available()>0){
          buf=(char) fstream.read();
          if ((buf!=13) && (buf!=10)){
            if (buf=='<'){
              block = new block("","tag");
              buf=(char) fstream.read();
              if (fstream.available()>0){
                if (buf=='/'){
                  block.type="ctag";
                }
                else{
                  block.text=block.text+buf;
                }
              }
              while (fstream.available()>0){
                buf=(char) fstream.read();
                if (buf=='>'){break;}
                else{
                  block.text=block.text+buf;
                }
              }
              return true;
            }
            else{
              block = new block(""+buf,"text");
              while (fstream.available()>0){
                buf=(char) fstream.read();
                if (buf=='<'){
                  block.type="tag";
                  break;
                }
                else{
                  block.text=block.text+buf;
                }
              }
              return true;
            }
          }
          //!
          return true;
        }
        else{
          fstream.close();
          return false;
          //eof
        }
      }
      catch (Exception e){
        e.printStackTrace();
        return false;
      }
    }
    else
    {
      return false;
    }
  }
}
Код:
public class main
{     
  public static void main(String args[])
  {
    RusTxt rus = new RusTxt();
    if( args.length == 0 )
    {
      System.out.println("No filename.");
      return;
    }
    else
    {
      blockreader bl = new blockreader(args[0]);
      //read all blocks
      while (bl.readblock())
      {
        System.out.println( bl.block.type + "-" + bl.block.text + "\n" );
      }
    }
  }
}
Понимаю, что всё плохо. Подскажите как лучше сделать.
__________________
Это жжжж неспроста...

Последний раз редактировалось Sam Dark; 24.05.2005 в 12:59.
Sam Dark вне форума  
Старый 24.05.2005, 14:19     # 2
/7y3uK
Advanced Member
 
Аватар для /7y3uK
 
Регистрация: 09.03.2004
Адрес: толстозадая Москва
Сообщения: 498

/7y3uK Реально крут(а)/7y3uK Реально крут(а)/7y3uK Реально крут(а)/7y3uK Реально крут(а)
1. Отдельные топики создавать незачем по джаве уже есть топики.
2. Можно поинтересоваться зачем такая штука нужна?
У меня есть подозрения, что можно все проще решить... а парсить текстовые данные - всегда гемор...
3. Зачем поток объявлен как статик? Статик - это, простыми словами, значит что этот заприваченый поток будет один на все экземпляры класса, т.е. если класс дернуть два раза и начать парсить два разных файла - пойдут глюки неимоверные...
__________________
В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах
/7y3uK вне форума  
Старый 24.05.2005, 18:30     # 3
Sam Dark
Member
 
Аватар для Sam Dark
 
Регистрация: 03.07.2003
Адрес: Voronezh, Russia
Пол: Male
Сообщения: 294

Sam Dark МолодецSam Dark МолодецSam Dark Молодец
Почитал свой пост... ужас. Что может сделать с человеком бессонная ночь...

Уже реализовал проще и лучше. На всё ушло 10 мин.

1. Сорри.
2. Штука нужна для сдачи зачёта. Ну и для себя. Поучится.
3. Это уже понял и переписал.

Если кому понадобится - скину код.
__________________
Это жжжж неспроста...
Sam Dark вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 06:48.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.