всем привет! у меня возникает проблема при работе с 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,
File "/usr/lib64/python2.5/xml/sax/xmlreader.py", line 291, in getValue
return self._attrs
KeyError: u'cod'
Помогите!!!Объясните в чем проблема
А давайте не будем размещать одно и то же сообщение в разных разделах. Мы здесь не тупые - кто хочет и знает, тот ответит.
lorien
А давайте не будем размещать одно и то же сообщение в разных разделах. Мы здесь не тупые - кто хочет и знает, тот ответит.
я сначала просто не заметила раздел с xml. и незачем ругаться!

Last edited April 30, 2008, 2:31 p.m.

Когда вы заметили раздел с XML, то можно и нужно было старое сообщение удалить.

По теме не знаю, что сказать.
attr.getValue(u'cod')

Видимо, у объекта attr, который ассоциирован с некоторым XML tag нету аттрибута с именем cod
lorien
Когда вы заметили раздел с XML, то можно и нужно было старое сообщение удалить.

По теме не знаю, что сказать.
attr.getValue(u'cod')

Видимо, у объекта attr, который ассоциирован с некоторым XML tag нету аттрибута с именем cod
так в этом и все волшебство, что есть, код выверен до елочей)))я просто уже не понимаю в чем дела
Помогите мне разобраться!!!!У меня просто уже не хватает сил. Все равно пока не разберусь я не оставлю эту тему в покое
Спасите юное создание от разрыва мозга-хелп и все такое! Я уже не могу((( Всех, кому небезразлична судьба белого пушистого комочка(меня) прошу откликнуться...
Ну, тогда python код и XML-файл, порождающий ошибку - в студию.
Опять же, часть ответов здесь: http://ln.com.ua/~openxs/articles/smart-questions-ru.html

print 'cod' in self._attrs в форум!
Готов поспорить, что вернёт, False, Цветик...
Ошибка в:
cvetik
код выверен до елочей
И дело не в орфографии... Я, на днях, разработал один алгоритм. Мне понадобилось два дня, чтобы убедиться в том, что он не верен. Ошибка была не велика, но ответ был в три с раза меньше, чем нужно. а ведь... код был выверен до мелочей!

На днях запостю сюда, может кому окажется интересным... Да и ешё ошибки найдутся... Я не против...

P.S. Скорее всего у тебя в одном из элементов исходного XML просто нет параметра 'cod', а ты его спрашиваешь в строке 49 loadtest1.py... Бысрым решением может быть второй параметр метода get. Посмотри справку по "dict".

P.P.S. Не вынесла моя душа. Я ещё помню два великих правила:
1. Модератор всегда прав.
2. Если Модератор не прав, значит это твои проблемы.
Но, блин, Lorien, осуждай чужие ошибки в личке. А здесь достаточно небольшого упоминания о том, что юзер неправ и предупреждён.
Я специально пишу сюда и надеюсь на понимание вопроса "почему не в личку?"...

Last edited May 2, 2008, 1:46 a.m.

...так кто ж ты, наконец?
-- Я -- часть той силы, что вечно хочет зла
и вечно совершает благо.
Спасибо за понимание проблемы и попытки помочь, вы этим вдыхаете жизнь в бездыханный комочек)) только вот проблема в том, что с xml-документами я работаю не первый день и подобного рода ошибки решаю на раз, потому что знаю причину их возникновения, но в этот раз, все как-будто сговорилось против меня, есть атрибут, но он его не хочет видеть:
вот кусочек xml-документа:
представляю Вашему вниманию код xml-документа:
<?xml version="1.0" encoding="utf-8"?>
<библиотека>
<читатели>
<читатель адрес="Саратов" имя="Юрий" кодчитателя="1" отчество="Николаевич" телефон="12-52-63" фамилия="Кукарев"/>
</читатели>
<авторы>
<автор ФИО="Пупкин Я.Я." кодавтора="1">
<книга жанр="научная литература" залоговаястоимость="10" кодкниги="1" название="Экономика" стоимостьпроката="5">
<выдачакниги датавозврата="21.12.2003" датавыдачи="12.12.2001" кодчитателя="Кукарев Юрий Николаевич"/>
<выдачакниги датавозврата="13.01.2007" датавыдачи="12.01.2007" кодчитателя="Лавров Олег Никифорович"/>
</книга>
</автор>
</авторы>
</библиотека>

а вот и загрузка данныз из него же:
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'читатель':
...(лишнее опустим)

elif name == u'выдачакниги':
self.knigavidana = biblioteka.knigavidana(self.kniga,
biblioteka.chitateli,
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,
KeyError: u'\u041a\u0443\u043a\u0430\u0440\u0435\u0432 \u042e\u0440\u0438\u0439 \u041d\u0438\u043a\u043e\u043b\u0430\u0435\u0432\u0438\u0447'