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

Поиск:

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


Шустрый
*


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

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



Есть XML файл, часть кода читается, а часть нет, вот сам файл
Код

        <clientlist>
        <client debtor="false" id="K1">
            <firstname>Андрей</firstname>
            <lastname>Григоренко</lastname>
            <phone>2445502</phone>
            <email>[email protected]</email>
            <order executed="false">
                <titles mark="HYUNDAI H 1407">
                    <title>Магнитола с CD</title>
                    <price>58</price>
                    <amont>1</amont>
                </titles>
                <titles mark="SONY NW-S 706">
                    <title>Flash плеер</title>
                    <price>322</price>
                    <amont>1</amont>
                </titles>
                <date>10.12.2007</date>
            </order>
        </client>
        <client debtor="true" id="K2">
            <firstname>Сергей</firstname>
            <lastname>Булаш</lastname>
            <phone>2314655</phone>
            <email>[email protected]</email>
            <order executed="false">
                <titles mark="VITEK VT 3796">
                    <title>Flash плеер</title>
                    <price>98</price>
                    <amont>1</amont>
                </titles>
                <date>отказался от заказа</date>
            </order>
        </client>
    </clientlist>



Добавлено через 1 минуту и 30 секунд
не могу прочитать поля titles.
PM MAIL   Вверх
AlexeyVorotnikov
Дата 13.12.2007, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А почему?
Цитата

drakogibka: постоянно вылезает ошибка что делать????????? 
support: Сейчас мы помедитируем, наш ведущий программист впадет в транс и попробует угадать текст ошибки и когда она у вас происходит.


Это сообщение отредактировал(а) AlexeyVorotnikov - 13.12.2007, 12:24


--------------------
RTFM!
Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification
PM MAIL   Вверх
IUser
Дата 13.12.2007, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



могу выслать проект, кто может помочь
PM MAIL   Вверх
ecologist
Дата 13.12.2007, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ну как можно без кода узнать, почему что-то не читается ? А разбираться в проекте целиком - времени жалко.
Вышли ту часть, которая читает файл.
PM MAIL   Вверх
AlexeyVorotnikov
Дата 13.12.2007, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



И напишите почему же всё-таки не работает. Выкидывает ексепшн? Какой? Что говорит?  И т.д.


--------------------
RTFM!
Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification
PM MAIL   Вверх
IUser
Дата 13.12.2007, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



выслал
PM MAIL   Вверх
IUser
Дата 13.12.2007, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



вот какая ошибка 

Exception in thread "main" java.lang.NullPointerException
    at shop.ShopHandler.characters(ShopHandler.java:111)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.characters(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
    at shop.SAXSimple.main(SAXSimple.java:37)
document started
PM MAIL   Вверх
Kangaroo
Дата 13.12.2007, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


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

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



Цитата(IUser @  13.12.2007,  12:27 Найти цитируемый пост)
выслал

куда выслал?  smile  Лучше сюда выложи код ShopHandler'a, авось поможем.


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


Шустрый
*


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

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



Код

import org.xml.sax.Attributes;
//import org.xml.sax.ContentHandler;
import java.util.ArrayList;
import org.xml.sax.helpers.DefaultHandler;


public class ShopHandler extends DefaultHandler{
    
    ArrayList<Client> client= new ArrayList<Client>();
   Client curr = null;
    InternetShopEnam  currentEnum   = null;
    
    public ArrayList<Client>  getClient(){
    return client;
    }
    
            
    
    
    public void startDocument(){
    
        System.out.println("document started");
        
    }
    
    public void startElement(String uri, String localName, String qName, Attributes attrs){
        
     
           
     if(qName.equals("client")){
       curr = new Client(); 
       curr.setDebtor(attrs.getValue(0));      
       curr.setDebtor(attrs.getValue(1)); 
       
       
                   
       
           
       }
          
     if(!"client".equals(qName) && !"clientlist".equals(qName)
         &&!"order".equals(qName)&&!"titles".equals(qName)) {
        
            currentEnum = InternetShopEnam.valueOf(qName.toUpperCase());
            
        }
        
        }
    
    public void endElement(String uri, String localName, String qName){
    
     
     
     if(qName.equals("client")) 
     client.add(curr);
     currentEnum = null;
     
     
     
    }
    public void characters(char[] ch, int start, int length){
    
     String s = new String( ch,  start,  length).trim();
     
     
       
     if (currentEnum ==null)
         return;
       
       
      switch(currentEnum){
        
     //      case FIRSTNAME:
       //        curr.setFirstName(s);
         //      break;
            case LASTNAME:
                curr.setLastName(s);
                break;
            case  PHONE:
             curr.setPhone(s);
             break;
            case  EMAIL:
             curr.setPhone(s);
             break;
            case  ID:
             curr.setDebtor(s);
             break;
             
            case  DEBTOR:
             curr.setDebtor(s);
             break;
            case  DATE:
               curr.getOrder().setDate(s);
               break;
            case  TITLE:
             curr.getOrder().getTitles().setTitle(s);
             break;  
           
      
      }
    }
   }


высылал на адресс который появляется при нажатии на E-mail

Добавлено через 55 секунд
ошибка в последнем Case
PM MAIL   Вверх
Kangaroo
Дата 13.12.2007, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


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

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



Дык теперь покажи Client )
Есть подозрение, что что-то в этой цепочке является НУЛЛем:
Код

curr.getOrder().getTitles().setTitle(s);


ЗЫ
Кроме Клиента, еще нужны Order & Title

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


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


Шустрый
*


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

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



Они являются вложенными, Title вложен в Order

Добавлено через 1 минуту и 8 секунд
и всё это вложено в клиента

Добавлено через 3 минуты и 45 секунд
вот клиент
Код

package shop;
public class Client {
    
private boolean debtor;
private String id;
private String firstname;
private String lastname;
private String phone;
private String email;
private Order order = new  Order();
 
   public Client(){
   }      
 
   public Client(boolean debtor, String id, String firstname, String lastname,String phone, String email, Order order ) {
   
        this.debtor = debtor;
        this.id = id;
        this.firstname = firstname;
        this.lastname = lastname;
        this.phone = phone;
        this.email = email;
        this.order =   order; 
    }
   
   public boolean getDebtor(){
   return debtor;
   }
   
   public void setDebtor(boolean debtor){
   this.debtor = debtor;
   }
   
   
   public String getId(){
   return id;
   }
   
   public void setDebtor(String id){
   this.id= id;
   }
   
   
   public String getFirstNane(){
   return firstname;
   }
   
   public void setFirstName(String firstname){
   this.firstname = firstname;
   }
   
   
   public String getLastName(){
   return lastname;
   }
   
   public void setLastName(String lastname){
   this.lastname = lastname;
   }
   
   
   public String getPhone(){
   return phone;
   }
   
   public void setPhone( String phone){
   this.phone = phone;
   }
   
   public String getEmail(){
   return email;
   }
   
   public void setEmail(String email){
   this.email= email;
   }
   
   
   public Order getOrder(){
   return order;
   }
   
   public void setOrder(Order order){
   this.order= order;
   }
    public static class Order{
    
    private String executed;
    private  String date;
    private  Titles title;
     public Order(){
     }
    public Order(String executed,String date,Titles title  ){
     this.executed = executed;
     this.date = date;
     this.title = title;    
    }
     
    public String getExecuted(){
        return executed;
        }
        
    public void setExecuted(String executed){
       this.executed= executed;
       }
       
        
        public String getDate(){
            return date;
            }
        public void setDate(String date){
            this.date= date;
            }
        
        public Titles getTitles(){
            return title;
            }
            
        public void setTitles(Titles title){
         this.title= title;
         }
          
    ///Вложенный класс товары
        
        public class Titles {

         private String mark;
           private String title;
           private int price;
             private int amount;
            
           public Titles(){
           }
            /** Creates a new instance of Titles */
            public Titles(String mark, String title, int price, int numbergoods, int amount ) {
            this.mark = mark;
            this.title = title;
            this.price = price;
            this.amount = amount;
             }
            public String getMark(){
                return mark;
                }
                
                public void setMark(String mark){
                this.mark = mark;
                }
                
                public String getTitle(){
                return title;
                }
                
                public void setTitle(String title){
                this.title = title;
                
            }
                
                public int getPrice(){
                return price;
                }
                
                public void setPrice(int price){
                this.price = price;
             }
                
                public int getAmount(){
                return amount;
                }
                
                public void setAmount(int amount){
                this.amount= amount;
             }
               
       }
        
            
        
    }
    
    public String toString(){
        
        return 
                "\nClient "+ "\n"+ firstname+ " "+ lastname+" "+" id: "+ id + " "+"debtor="+debtor + 
                "\n"+ phone 
                + "\n "+ email+ "\nDate "+ order.getDate()+ order.getTitles().title;
                
                
        }
}

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


AA - Aussie Animal
****


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

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



Вот:
Код

private  Titles title;    
     public Order(){    
     }

У тебя title не инициализируется. 
Нужно
Код

private  Titles title = new Titles();    
//or
     public Order(){    
         title = new Titles();
     }



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


Опытный
**


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

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



Kangaroo, опередил smile

Добавлено через 1 минуту и 4 секунды
Однако, судя по коду, это был отнюдь не последний вопрос. Вопросов будет ещё много. smile


--------------------
RTFM!
Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification
PM MAIL   Вверх
Kangaroo
Дата 13.12.2007, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


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

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



Цитата(AlexeyVorotnikov @  13.12.2007,  14:51 Найти цитируемый пост)
Однако, судя по коду, это был отнюдь не последний вопрос. Вопросов будет ещё много.

Да, похоже на то smile


IUser, а почему у тебя Titles один? Может нужно сделать класс Title и список объектов этого класса titles ?


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


Шустрый
*


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

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



это точно, буду очень благодарен за помощь

Добавлено через 4 минуты и 7 секунд
Запустилось!!

а можно класс Titles отдельно  сделать, не вложенным, или тогда придется ещё одну коллекцию делать на Titles?
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.0578 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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