Найти - Пользователи
Полная версия: запись в файл результата парсинга (SAX)
Начало » Python для экспертов » запись в файл результата парсинга (SAX)
1
Aristo.py
Здравствуйте. Прошу прощения за беспокойство. Обращаюсь к вам по причине собственной ограниченности.
Дело вот в чем: Надо было распарсить xml с кодировкой cp1251 через SAX и записать результат в файл.
код xml для примера:
<?xml version=“1.0” encoding=“windows-1251” ?>
- <main>
- <Данные>
<ДатаНачала>22.03.2011</ДатаНачала>
</Данные>
</main>


код модуля:

import StringIO
from xml.sax.handler import ContentHandler
import xml.sax


class textHandler(ContentHandler):

def characters(self, ch):
output = StringIO.StringIO()
output.write(ch.encode(“cp1251”))
print ch

parser = xml.sax.make_parser()
handler = textHandler()
parser.setContentHandler(handler)
parser.parse(“new2.xml”)
try:
f = open('rez.txt','w')
f.write(handler)
finally:
f.close()


if __name__ == ‘__main__’:
pass

в результате получаем строку:

22.03.2011

и заново созданный, но пустой файл rez2.txt
что не правильно в коде?
что сделать что бы он записывал весь поток в файл?
PooH
Ну вот что-то вроде такого:
from xml.sax.handler import ContentHandler
from xml import sax


class TextHandler(ContentHandler):

def __init__(self, filename):
ContentHandler.__init__(self)
self.filename = filename

def startDocument(self):
self.output = open(self.filename, 'w')

def endDocument(self):
self.output.close()

def characters(self, ch):
self.output.write(ch.encode("cp1251"))


if __name__ == '__main__':
parser = sax.make_parser()
handler = TextHandler('rez.txt')
parser.setContentHandler(handler)
parser.parse("new2.xml")
Aristo.py
Спасибо большое, но этот код даже не создает нужного файла, а если таковой уже существует, то он не изменяет его.
PooH
Aristo.py
Спасибо большое, но этот код даже не создает нужного файла, а если таковой уже существует, то он не изменяет его.
Обижаете, начальник. Код я проверил перед тем как постить. Проверьте имена файлов и отступы у себя.
Aristo.py
ПардоН!!! Моя глупость !!!! Все работает! Низкий Вам Поклон и здравствовать всю жизнь!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB