Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> помогите с xml.sax, проблемы с xml.sax 
:(
    Опции темы
cvetik
Дата 30.4.2008, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



всем привет! у меня возникает проблема при работе с sax
не могу понять в чем ошибка
Traceback (most recent call last):
  File "loadtest1.py", line 63, in <module>
    load()
  File "loadtest1.py", line 60, in load
    parser.parse(os.path.join(os.getcwd(), "test1.xml"))
  File "/usr/lib64/python2.5/xml/sax/expatreader.py", line 107, in parse
    xmlreader.IncrementalParser.parse(self, source)
  File "/usr/lib64/python2.5/xml/sax/xmlreader.py", line 123, in parse
    self.feed(buffer)
  File "/usr/lib64/python2.5/xml/sax/expatreader.py", line 207, in feed
    self._parser.Parse(data, isFinal)
  File "/usr/lib64/python2.5/xml/sax/expatreader.py", line 301, in start_element
    self._cont_handler.startElement(name, AttributesImpl(attrs))
  File "loadtest1.py", line 49, in startElement
    biblioteka.chitateli[attr.getValue(u'cod')],
  File "/usr/lib64/python2.5/xml/sax/xmlreader.py", line 291, in getValue
    return self._attrs[name]
KeyError: u'cod'
Помогите!!!Объясните в чем проблема
PM MAIL   Вверх
Void
Дата 30.4.2008, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

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



Код где?

Телепатическим методом попробую догадаться, что происходит запрос несуществующего у данного node атрибута.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
cvetik
Дата 30.4.2008, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



представляю Вашему вниманию код xml-документа:
<?xml version="1.0" encoding="utf-8"?>
<библиотека>
  <читатели>
    <читатель адрес="Саратов" имя="Юрий" кодчитателя="1" отчество="Николаевич" телефон="12-52-63" фамилия="Кукарев"/>
    <читатель адрес="Саратов" имя="Андрей" кодчитателя="3" отчество="Максимов" телефон="32-86-52" фамилия="Ерофеев"/>
    <читатель адрес="Саратов1" имя="Олег" кодчитателя="2" отчество="Никифорович" телефон="12-68-36" фамилия="Лавров"/>
    <читатель адрес="Саратов" имя="Сергей" кодчитателя="4" отчество="Олегович" телефон="78-15-64" фамилия="Русланов"/>
  </читатели>
  <авторы>
    <автор ФИО="Пупкин Я.Я." кодавтора="1">
      <книга жанр="научная литература" залоговаястоимость="10" кодкниги="1" название="Экономика" стоимостьпроката="5">
        <выдачакниги датавозврата="21.12.2003" датавыдачи="12.12.2001" кодчитателя="Кукарев Юрий Николаевич"/>
        <выдачакниги датавозврата="13.01.2007" датавыдачи="12.01.2007" кодчитателя="Лавров Олег Никифорович"/>
      </книга>
      <книга жанр="учебное пособие" залоговаястоимость="20" кодкниги="2" название="Маркетинг" стоимостьпроката="5">
        <выдачакниги датавозврата="23.02.2007" датавыдачи="14.01.2007" кодчитателя="Ерофеев Андрей Максимов"/>
      </книга>
    </автор>
    <автор ФИО="Черкасов В.Н." кодавтора="3">
      <книга жанр="пособие для преподавателей" залоговаястоимость="10" кодкниги="4" название="Информационная безопасность" стоимостьпроката="5">
        <выдачакниги датавозврата="" датавыдачи="12.01.2007" кодчитателя="Кукарев Юрий Николаевич"/>
      </книга>
    </автор>
    <автор ФИО="Путятинский А.Н." кодавтора="2">
      <книга жанр="учебное пособие" залоговаястоимость="50" кодкниги="3" название="Информатика" стоимостьпроката="5">
        <выдачакниги датавозврата="13.03.2007" датавыдачи="12.01.2007" кодчитателя="Русланов Сергей Олегович"/>
      </книга>
    </автор>
    <автор ФИО="Мухина М.К." кодавтора="5"/>
    <автор ФИО="Ганиа М.Ю." кодавтора="4"/>
    <автор ФИО="test7" кодавтора="7">
      <книга жанр="h" залоговаястоимость="h" кодкниги="h" название="h" стоимостьпроката="h"/>
    </автор>
  </авторы>
</библиотека>

а вот и загрузка данныз из него же:
def load():
  class Handler(xml.sax.handler.ContentHandler):
    def __init__(self):
      xml.sax.handler.ContentHandler.__init__(self)
      self.avtor = None
      self.kniga = None

    def startElement(self, name, attr):
     
       
      if name == u'читатель':
        chit = biblioteka.chitatel(attr.getValue(u'кодчитателя'),
                                   attr.getValue(u'фамилия').encode('utf-8'),
                                   attr.getValue(u'имя').encode('utf-8'),
                                   attr.getValue(u'отчество').encode('utf-8'),
                                   attr.getValue(u'адрес').encode('utf-8'),
                                   attr.getValue(u'телефон')
                                   )
    biblioteka.chitateli[chit.codchitately] = chit
      elif name == u'автор':
        self.avtor = biblioteka.avtor(attr.getValue(u'кодавтора'),
                                      attr.getValue(u'ФИО').encode('utf-8')
                      )
        biblioteka.avtors[self.avtor.codavtora] = self.avtor
      elif name == u'книга':
        self.kniga = biblioteka.kniga(attr.getValue(u'кодкниги'),
                                      attr.getValue(u'название').encode('utf-8'),
                      self.avtor,
                                      attr.getValue(u'залоговаястоимость'),
                                      attr.getValue(u'стоимостьпроката'),
                                      attr.getValue(u'жанр').encode('utf-8')
                                      )
        biblioteka.knigi[self.kniga.codknigi] = self.kniga
    self.avtor.addkniga(self.kniga)
      elif name == u'выдачакниги':
       self.knigavidana = biblioteka.knigavidana(self.kniga,
                                      biblioteka.chitateli[attr.getValue(u'кодчитателя')],
                                      attr.getValue(u'датавыдачи').encode('utf-8'),
                                      attr.getValue(u'датавозврата').encode('utf-8')
                                      )
       biblioteka.knigavidanay.append(self.knigavidana)
      
      
    def endElement(self, name):
      pass

  parser = xml.sax.make_parser()
  parser.setContentHandler(Handler())
  parser.parse(os.path.join(os.getcwd(), "test1.xml"))

if __name__ == '__main__':
  load()а ошибка следующая:
File "test1.py", line 78, in <module>
    save()
  File "test1.py", line 15, in save
    loadtest1.load()
  File "/home/cvetlana/biblioteka/loadtest1.py", line 61, in load
    parser.parse(os.path.join(os.getcwd(), "test1.xml"))
  File "/usr/lib64/python2.5/xml/sax/expatreader.py", line 107, in parse
    xmlreader.IncrementalParser.parse(self, source)
  File "/usr/lib64/python2.5/xml/sax/xmlreader.py", line 123, in parse
    self.feed(buffer)
  File "/usr/lib64/python2.5/xml/sax/expatreader.py", line 207, in feed
    self._parser.Parse(data, isFinal)
  File "/usr/lib64/python2.5/xml/sax/expatreader.py", line 301, in start_element
    self._cont_handler.startElement(name, AttributesImpl(attrs))
  File "/home/cvetlana/biblioteka/loadtest1.py", line 49, in startElement
    biblioteka.chitateli[attr.getValue(u'кодчитателя')],
KeyError: u'\u041a\u0443\u043a\u0430\u0440\u0435\u0432 \u042e\u0440\u0438\u0439 \u041d\u0438\u043a\u043e\u043b\u0430\u0435\u0432\u0438\u0447'
  если меня все на транслит это дело не спасает(((
я уже правда не могу понять в чем дело
PM MAIL   Вверх
pythonwin
Дата 3.5.2008, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

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



cvetik, используй, пожалуйста, подсветку кода
PM WWW GTalk Jabber   Вверх
cvetik
Дата 4.5.2008, 08:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



прошу прощения, теперь буду все выделять  smile 
PM MAIL   Вверх
Goganchic
Дата 5.5.2008, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



cvetik, и где выделение? Скопируй плз хотя бы 78-ю строчку, в которой ошибка-то возникает
PM Jabber   Вверх
_Viper_
Дата 5.5.2008, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



К тому же код не полный и невозможно покрутить это у себя. 

Заметил одну странность в данных для книги кодчитателя="Кукарев Юрий Николаевич" а для читателя кодчитателя="1".
PM MAIL   Вверх
cvetik
Дата 12.5.2008, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



спасибо!!!!!Ошибка была в том, что когда  писался код для сохранения в xml я писала str()для кода читателя а это неправильно, соответственно вместо кода 1 получался код Кукарев)))) 
Радость пушистого комочка не имеет предела, теперь буду бегать отсчастья по шкафам и диванам. За сим расланиваюсь мурлыкая и ласкаясь.
Ваш комочек  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Веб-разработка и фреймворки | Следующая тема »


 




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


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

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