Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание парсера SAX, Как создать класс с описанием предметной 
:(
    Опции темы
IUser
Дата 6.12.2007, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 22.3.2007

Репутация: нет
Всего: нет



 Как на основе XML  файла сгенерировать класс, описывающий предметную область. Можно как то это сделать через Eclipse, может кто знает как? 
PM MAIL   Вверх
w1nd
Дата 6.12.2007, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата(IUser @  6.12.2007,  10:29 Найти цитируемый пост)
класс, описывающий предметную область. 

Это как понять?


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
alexadr
Дата 6.12.2007, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 25.9.2006

Репутация: 4
Всего: 4



да, афтору стоит  разложить по полкам этот поток сознанияsmile
PM MAIL   Вверх
Samotnik
Дата 6.12.2007, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Цитата(IUser @  6.12.2007,  09:29 Найти цитируемый пост)
 описывающий предметную область. 

Курсача что ли??
Делал недавно тоде самое (может в одном универе учимся ?  smile  а может и нет...)
Мой xml
Код

<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE firma [
    <!ELEMENT firma (nazv, sfera, F_adres, F_telefon, F_login, F_pass, proekt, investor)>
        <!ELEMENT nazv (#PCDATA)>
        <!ELEMENT sfera (#PCDATA)>
        <!ELEMENT F_adres (#PCDATA)>
        <!ELEMENT F_telefon (#PCDATA)>
        <!ELEMENT F_login (#PCDATA)>
        <!ELEMENT F_pass (#PCDATA)>
        <!ELEMENT proekt (srok, cel, neobx_summa, summa_vozvr)>
            <!ELEMENT srok (#PCDATA)>
            <!ELEMENT cel (#PCDATA)>
            <!ELEMENT neobx_summa (#PCDATA)>
            <!ATTLIST neobx_summa data_byte CDATA #FIXED "INTEGER">
            <!ELEMENT summa_vozvr (#PCDATA)>
            <!ATTLIST summa_vozvr data_byte CDATA #FIXED "INTEGER">
        <!ELEMENT investor (fio, adres, telefon, login, pass)>
            <!ELEMENT fio (#PCDATA)>
            <!ELEMENT adres (#PCDATA)>
            <!ELEMENT telefon (#PCDATA)>
            <!ELEMENT login (#PCDATA)>
            <!ELEMENT pass (#PCDATA)>
]>

<firma>
        <nazv>Horizont</nazv>
        <sfera>Developing televisions</sfera>
        <F_adres>Nova Prospect 18</F_adres>
        <F_telefon>217-12-12</F_telefon>
        <F_login>qwerty</F_login>
        <F_pass>1234</F_pass>
        <proekt>
            <srok>2 years</srok>
            <cel>Buy adding plant</cel>
            <neobx_summa>1234631</neobx_summa>
            <summa_vozvr>412310</summa_vozvr>
        </proekt>
        <investor>
            <fio>Pushkin A.v.</fio>
            <adres>Rokossovskogo 50, 123</adres>    
            <telefon>1233212</telefon>
            <login>andrew</login>
            <pass>drdf</pass>
        </investor>
</firma>

Мой парсер:
Код

import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.*;

import java.io.*;

import java.util.*;

class MyTree implements Comparator {
    String nazv_n, sfera_n, F_adres_n,F_telefon_n, F_login_n, F_pass_n;
    String proektSrok_n, proektCel_n, proektNeobxSumma_n, proektSummaVozvr_n;
    String investorFIO_n, investorAdres_n, investorTelefon_n, investorLogin_n,investorPass_n;
    MyTree() {}

    public void print() {
        System.out.println ("\n\t\tInformacija o predprijatii:\n");
        System.out.println("Name of office:\t\t" + nazv_n);
        System.out.println("Sfera Dejatelnosti:\t" + sfera_n);
        System.out.println("Address:\t\t\t" + F_adres_n);
        System.out.println("Phone:\t\t" + F_telefon_n);
        System.out.println("Loggin:\t\t\t" + F_login_n);
        System.out.println("Password:\t\t\t" + F_pass_n);
        System.out.println ("\n\t\tInformation about project:\n");
        System.out.println("Goal of project:\t\t" + proektCel_n);
        System.out.println("Srok of project:\t\t" + proektSrok_n);
        System.out.println("Nessosari summa:\t" + proektNeobxSumma_n);
        System.out.println("Summa vozvrata:\t\t" + proektSummaVozvr_n);
        System.out.println ("\n\t\tInformation of investor:\n");
        System.out.println("FIO Investor:\t\t" + investorFIO_n);
        System.out.println("Address:\t\t\t" + investorAdres_n);
        System.out.println("Phone:\t\t" + investorTelefon_n);
        System.out.println("Login:\t\t\t" + investorLogin_n);
        System.out.println("Password:\t\t\t" + investorPass_n);
    }

    public int compare(Object objl, Object obj2) {
        return 1;
    }
}

class RusPrintStream extends PrintStream{ 
public RusPrintStream() throws UnsupportedEncodingException{
    super(System.out,true,"Cp866");}}

public class MyParser {
    
    static MyTree bs = new MyTree();
    public static void main(String[] args) {
        TreeSet tree = null;
        tree = new TreeSet(new MyTree());
     try{
        File x = new File("doc.xml");
        DocumentBuilderFactory f = DocumentBuilderFactory.newInstance();
        f.setValidating(true);
        DocumentBuilder b = f.newDocumentBuilder();
        ErrorHandler h = new MyErrorHandler();
        b.setErrorHandler(h);
        Document d = b.parse(x);
        System.setOut(new RusPrintStream());
        System.out.println("NOT ERRORS  HERE");
        Element root = d.getDocumentElement();
        System.out.println("ROOT ELEMENT  " + root.getNodeName());
        NodeList children = root.getChildNodes();
        System.out.println("IN document "+children.getLength()+" Uzlov");
       
        NodeList nazv = root.getElementsByTagName("nazv");
        NodeList sfera = root.getElementsByTagName("sfera");
        NodeList F_adres = root.getElementsByTagName("F_adres");
        NodeList F_telefon = root.getElementsByTagName("F_telefon");
        NodeList F_login = root.getElementsByTagName("F_login");
        NodeList F_pass = root.getElementsByTagName("F_pass");
 //     NodeList investor = root.getElementsByTagName("investor");

        Element el = (Element)root.getElementsByTagName("proekt").item(0);
        Element el2 = (Element)root.getElementsByTagName("investor").item(0);
 
        NodeList proektCel = el.getElementsByTagName("cel");
        NodeList proektSrok = el.getElementsByTagName("srok");
        NodeList proektNeobxSumma = el.getElementsByTagName("neobx_summa");
        NodeList proektSummaVozvr = el.getElementsByTagName("summa_vozvr");
 
        NodeList investorFIO = el2.getElementsByTagName("fio");
        NodeList investorAdres = el2.getElementsByTagName("adres");
        NodeList investorTelefon = el2.getElementsByTagName("telefon");
        NodeList investorLogin = el2.getElementsByTagName("login");
        NodeList investorPass = el2.getElementsByTagName("pass");
        
            for (int i = 0; i < nazv.getLength(); i++) {
                Node nazvNODE = nazv.item(i);
                if ((nazvNODE != null) && nazvNODE instanceof Element) {
                    String nazvStr = nazvNODE.getFirstChild().getNodeValue();
                    bs.nazv_n = nazvStr;
                }

                Node sferaNODE = sfera.item(i);
                if ((sferaNODE != null) && sferaNODE instanceof Element) {
                    String sferaStr = sferaNODE.getFirstChild().getNodeValue();

                    bs.sfera_n = sferaStr;
                }

                Node F_adresNODE = F_adres.item(i);
                if ((F_adresNODE != null) && F_adresNODE instanceof Element) {
                    String F_adresStr = F_adresNODE.getFirstChild().getNodeValue();
                    bs.F_adres_n = F_adresStr;
                }
                
                Node F_telefonNODE = F_telefon.item(i);
                if ((F_telefonNODE != null) && F_telefonNODE instanceof Element) {
                    String F_telefonStr = F_telefonNODE.getFirstChild().getNodeValue();
                    bs.F_telefon_n = F_telefonStr;
                }
                
                Node F_loginNODE = F_login.item(i);
                if ((F_loginNODE != null) && F_loginNODE instanceof Element) {
                    String F_loginStr = F_loginNODE.getFirstChild().getNodeValue();
                    bs.F_login_n = F_loginStr;
                }
                
                Node F_passNODE = F_pass.item(i);
                if ((F_passNODE != null) && F_passNODE instanceof Element) {
                    String F_passStr = F_passNODE.getFirstChild().getNodeValue();
                    bs.F_pass_n = F_passStr;
                    if (bs != null)
                        tree.add(bs);
                }

                Node proektCelNODE = proektCel.item(i);
                if ((proektCelNODE != null) && proektCelNODE instanceof Element) {
                    String proektCelStr = proektCelNODE.getFirstChild().getNodeValue();
                    bs.proektCel_n = proektCelStr;
                }
                Node proektSrokNODE = proektSrok.item(i);
                if ((proektSrokNODE != null) && proektSrokNODE instanceof Element) {
                    String proektSrokStr = proektSrokNODE.getFirstChild().getNodeValue();
                    bs.proektSrok_n = proektSrokStr;
                }
                Node proektNeobxSummaNODE = proektNeobxSumma.item(i);
                if ((proektNeobxSummaNODE != null) && proektNeobxSummaNODE instanceof Element) {
                    String proektNeobxSummaStr = proektNeobxSummaNODE.getFirstChild().getNodeValue();
                    bs.proektNeobxSumma_n = proektNeobxSummaStr;
                }

                Node proektSummaVozvrNODE = proektSummaVozvr.item(i);
                if ((proektSummaVozvrNODE != null) && proektSummaVozvrNODE instanceof Element) {
                    String proektSummaVozvrStr = proektSummaVozvrNODE.getFirstChild().getNodeValue();
                    bs.proektSummaVozvr_n = proektSummaVozvrStr;
                }
///////                
                Node investorFIONODE = investorFIO.item(i);
                if ((investorFIONODE != null) && investorFIONODE instanceof Element) {
                    String investorFIOStr = investorFIONODE.getFirstChild().getNodeValue();
                    bs.investorFIO_n = investorFIOStr;
                }
                Node investorAdresNODE = investorAdres.item(i);
                if ((investorAdresNODE != null) && investorAdresNODE instanceof Element) {
                    String investorAdresStr = investorAdresNODE.getFirstChild().getNodeValue();
                    bs.investorAdres_n = investorAdresStr;
                }
                Node investorTelefonNODE = investorTelefon.item(i);
                if ((investorTelefonNODE != null) && investorTelefonNODE instanceof Element) {
                    String investorTelefonStr = investorTelefonNODE.getFirstChild().getNodeValue();
                    bs.investorTelefon_n = investorTelefonStr;
                }
                Node investorLoginNODE = investorLogin.item(i);
                if ((investorLoginNODE != null) && investorLoginNODE instanceof Element) {
                    String investorLoginStr = investorLoginNODE.getFirstChild().getNodeValue();
                    bs.investorLogin_n = investorLoginStr;
                }
                Node investorPassNODE = investorPass.item(i);
                if ((investorPassNODE != null) && investorPassNODE instanceof Element) {
                    String investorPassStr = investorPassNODE.getFirstChild().getNodeValue();
                    bs.investorPass_n = investorPassStr;
                }
            Iterator it = tree.iterator();
            while (it.hasNext()) {
                MyTree gi = (MyTree) it.next();
                gi.print();
            }
        }

      } 
        catch (ParserConfigurationException e) {
         System.out.println(e.toString());    
      } catch (SAXException e) {
         System.out.println(e.toString());    
      } catch (IOException e) {
         System.out.println(e.toString());    
      }
            
 }
 

      private static class MyErrorHandler implements ErrorHandler {
      public void warning(SAXParseException e) throws SAXException {
         System.out.println("Warning: "); 
         printInfo(e);
      }
      public void error(SAXParseException e) throws SAXException {
         System.out.println("Error: "); 
         printInfo(e);
      }
      public void fatalError(SAXParseException e) throws SAXException {
         System.out.println("Fatal Error: "); 
         printInfo(e);
      }
      private void printInfo(SAXParseException e) {
         System.out.println("ID: "+e.getSystemId());
        System.out.println("Number string: "+e.getLineNumber());
        System.out.println("Number kolonki: "+e.getColumnNumber());
        System.out.println("Message: "+e.getMessage());
      }
      
     }
}

PM MAIL   Вверх
Kangaroo
Дата 6.12.2007, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



Я так понимаю, что автору нужно что-то похожее на тулзы Хайбернета -  с маппинга сгенерировать класс. А у него не с маппинга, а с обычного xml файла...


--------------------
Lost....
PM MAIL MSN   Вверх
LSD
Дата 6.12.2007, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



JAXB может по схеме сгенерировать классы. Но нужна схема, а не XML.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
IUser
Дата 6.12.2007, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 22.3.2007

Репутация: нет
Всего: нет



Всё есть и схема и  XML, только вот как генерить не знаю, подскажите плиз.

Добавлено через 4 минуты и 26 секунд
Подскажите как использовать JAXB
PM MAIL   Вверх
w1nd
Дата 6.12.2007, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Apache XMLBeans

Если очень хочется, чтобы это всё было интегрировано в eclipse, то JiBX, для него есть плагин - org.jibx.eclipse.

Это сообщение отредактировал(а) w1nd - 6.12.2007, 13:20


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
LSD
Дата 6.12.2007, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Поставь JDK 1.6 (туда входит JAXB). И потом набираеш, что-то типа:
Код

xjc -p ru.vingrad.xml -d ./src schema.xsd



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
IUser
Дата 6.12.2007, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 22.3.2007

Репутация: нет
Всего: нет



 Скачал плогин, но ни как не могу найти менюшку где его можно подключить
остановился на Set JiBX Project Properties, не могу найти свойства эклипса, может кто подскажет? У меня версия эклипса Version: 3.3.1
PM MAIL   Вверх
IUser
Дата 6.12.2007, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 22.3.2007

Репутация: нет
Всего: нет



Не подключается плогин smile 
PM MAIL   Вверх
w1nd
Дата 6.12.2007, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата(IUser @  6.12.2007,  16:05 Найти цитируемый пост)
остановился на Set JiBX Project Properties, не могу найти свойства эклипса, может кто подскажет?

В свойствах java-проекта.

Это сообщение отредактировал(а) w1nd - 6.12.2007, 17:17


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
IUser
  Дата 6.12.2007, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 22.3.2007

Репутация: нет
Всего: нет



Нету там в свойствах JiBX

Добавлено через 42 секунды
Придется ручками писать.
PM MAIL   Вверх
w1nd
Дата 6.12.2007, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата(IUser @  6.12.2007,  17:40 Найти цитируемый пост)
Нету там в свойствах JiBX

А вы хоть правильно плагин установили? Согласно описанию, плагин должен работать на любом третьем эклипсе.


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
IUser
Дата 7.12.2007, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 22.3.2007

Репутация: нет
Всего: нет



Скопировал папку с плагинами org.jibx.eclipse-0.0.3, в папку plugins эклипса, или что то ещё надо делать?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1667 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.