Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2012, 08:36   #1
Музыкант
Пользователь
 
Регистрация: 15.11.2011
Сообщений: 26
По умолчанию SAX, тупит, не пойму в чем ошибка

вот написал сакс парсер, но он не хочет заносить значения в класс.
вот кусок xml
Код:
<?xml version="1.0" encoding="UTF-8" ?>
<necklaces xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	   xsi:noNamespaceSchemaLocation="Necklaces.xsd">
    <necklace>
        <stones>
            <stone cost="80">
                <nameStone>SAPPHIRE</nameStone>
                <weight>9</weight>
                <transparency>MUDDY</transparency>
            </stone>
            <stone cost="80">
                <nameStone>AQUAMARINE</nameStone>
                <weight>16</weight>
                <transparency>EASY_MUDDY</transparency>
            </stone>
            <stone cost="80">
                <nameStone>DIAMOND</nameStone>
                <weight>2</weight>
                <transparency>CLEAR</transparency>
            </stone>
        </stones>        
    </necklace>
  </necklaces>
вот хэндл парсера
Код:
public class SAXNecklaces extends DefaultHandler {

    private ArrayList<Necklace> necklaces = new ArrayList<Necklace>();
    private ArrayList<Stone> stones = new ArrayList<Stone>();
    private Snap snap;
    private Cord cord;
    private Stone currStone = null;
    private Integer costStone;
    private Integer costSnap;
    private Integer costCord;
    private String accum = "";
    private String currElem;

    public ArrayList<Necklace> getNecklaces() {
        return necklaces;
    }

    @Override
    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
        currElem = qName;
        System.out.println(currElem);
        if (currElem.equals("stone")) {
            currStone = new Stone();
            costStone = new Integer(attributes.getValue("cost"));
        }
        if (currElem.equals("snap")) {
            snap = new Snap();
            costSnap = new Integer(attributes.getValue("cost"));
            snap.setCost(costSnap);
        }
        if (currElem.equals("cord")) {
            cord = new Cord();
            costCord = new Integer(attributes.getValue("cost"));
        }
    }

    @Override
    public void endElement(String uri, String localName, String qName) throws SAXException {
        accum = "";
        if (qName.equals("stone")) {
            stones.add(currStone);
        }
        if (qName.equals("cord")) {
            Necklace necklace = new Necklace(stones, snap, cord);
            necklaces.add(necklace);
        }
    }

    @Override
    public void characters(char[] ch, int start, int length) throws SAXException {
        
        accum = new String(ch, start, length).trim();
        if (currElem.equals("nameStone")) {
            currStone.setName(NameItem.valueOf(accum));
            System.out.println(accum);
            System.out.println(currStone.getName());
        }
        if (currElem.equals("weight")) {
            //Float weight = new Float(accum);
            //currStone.setWeight(weight);
            //currStone.setPrice(weight * costStone);
            System.out.println(accum);
        }
        if (currElem.equals("transparency")) {
            //currStone.setTransparency(Transparency.valueOf(accum));
            System.out.println(accum);
        }
        if (currElem.equals("nameSnap")) {
            //snap.setName(NameItem.valueOf(accum));
            System.out.println(accum);
        }
        if (currElem.equals("matterSnap")) {
            //snap.setMatter(Material.valueOf(accum));
            System.out.println(accum);
        }
        if (currElem.equals("view")) {
            //snap.setView(ViewSnap.valueOf(accum));
            System.out.println(accum);
        }
        if (currElem.equals("nameCord")) {
            //cord.setName(NameItem.valueOf(accum));
            System.out.println(accum);
        }
        if (currElem.equals("matterCord")) {
            //cord.setMatter(Material.valueOf(accum));
            System.out.println(accum);
        }
        if (currElem.equals("weaving")) {
            //cord.setWeaving(Weaving.valueOf(accum));
            System.out.println(accum);
        }
        if (currElem.equals("length")) {
            //Integer length1 = new Integer(accum);
            //cord.setCost(costCord * length1);
            //cord.setLength(length);
            System.out.println(accum);
        }
    }
}
проблема в том, что когда вот так все в characters закоментировано, кроме вывода, он все выводит нормально, но если я пытаююсь заполнить объект, там я откоментировал currStone.setName(NameItem.valueOf( accum)); то он выдает ошибку, что не может заполнить энам, т.к. строка accum пустая, хотя она же не пустая, печатается то она нормально.
даже препод не может помочь, как они нас учат непонятно
Музыкант вне форума Ответить с цитированием
Старый 22.11.2012, 08:39   #2
Музыкант
Пользователь
 
Регистрация: 15.11.2011
Сообщений: 26
По умолчанию

очень нужна помощь, до воскресенья надо сдать проект, а парсер, гад, не работет
Музыкант вне форума Ответить с цитированием
Старый 22.11.2012, 19:21   #3
Музыкант
Пользователь
 
Регистрация: 15.11.2011
Сообщений: 26
По умолчанию

все, разобрался
Музыкант вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не пойму в чем ошибка Sancheper Паскаль, Turbo Pascal, PascalABC.NET 1 20.06.2012 22:56
Не пойму в чем ошибка Snekich Microsoft Office Excel 5 18.12.2011 19:35
Не пойму в чем ошибка. Кто подскажет? Wild_klas Помощь студентам 8 20.10.2010 09:05
не пойму в чем ошибка Анастасия123456789 Помощь студентам 3 23.03.2009 15:53
Не пойму в чем ошибка Machete PHP 2 08.12.2008 10:09