Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 24, 2008 22:08:36

Vasilych
От:
Зарегистрирован: 2008-04-24
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Как добраться до атрибутов <?xml?>?

Добрый день!
Разбираю xml файл. Как работает SAX разобрался, вытаскиваю все что нужно. Но вопрос, как получить значение encoding из заголовка <?xml version=“1.0” encoding=“windows-1251” ?> ? Метод startElemen из ContentHandler его пропускает.

Спасибо.



Офлайн

#2 Апрель 25, 2008 00:14:02

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Как добраться до атрибутов <?xml?>?

SAX этого не умеет.
Можно создать промежуточный класс для файлогого объекта, передаваемого в парсер и вытащить то, что нужно с помощью re. Что-то типа этого: r"<?xml\s+*\s+encoding=\“(.+)\”*>".



Офлайн

#3 Апрель 25, 2008 06:30:56

Vasilych
От:
Зарегистрирован: 2008-04-24
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Как добраться до атрибутов <?xml?>?

ZZZ
SAX этого не умеет.
Можно создать промежуточный класс для файлогого объекта, передаваемого в парсер и вытащить то, что нужно с помощью re. Что-то типа этого: r"<?xml\s+*\s+encoding=\“(.+)\”*>".
Жаль что не умеет…. Будем пробовать так. Спасибо.



Офлайн

#4 Апрель 25, 2008 12:02:19

proDiva
От:
Зарегистрирован: 2007-02-15
Сообщения: 244
Репутация: +  0  -
Профиль   Отправить e-mail  

Как добраться до атрибутов <?xml?>?

Примерчик, думаю, поможет:

# -*- coding: cp1251 -*-
“”“Работа с xml-файлами”“”

import xml.dom.minidom

in_file = ‘c:/xml_upd/PacketEPD.xml’

class func_xml:
def onInit(self, infile):
dom = xml.dom.minidom.parse(infile)
dom.normalize()
print u'Кодировка - ‘+dom.encoding
self.xml_tree(dom)

def xml_tree(self, node):
atts = node.attributes or {}

if node.nodeType == node.TEXT_NODE:
print node.nodeValue.strip()

for k, v in atts.items():
print u’Элемент: ‘+k+u’\nЗначение: '+v
for child in node.childNodes:
self.xml_tree(child)
return

zapusk = func_xml()
zapusk.onInit(in_file)



Офлайн

#5 Апрель 25, 2008 12:24:25

hellt
От:
Зарегистрирован: 2008-03-14
Сообщения: 45
Репутация: +  0  -
Профиль   Отправить e-mail  

Как добраться до атрибутов <?xml?>?

а beautiful soup? я сам пока с xml не работал, но много слышал об этом модуле.



Офлайн

#6 Апрель 26, 2008 00:01:42

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Как добраться до атрибутов <?xml?>?

proDiva
Примерчик, думаю, поможет:


import xml.dom.minidom

Речь шла о SAX, а он для многих вещей удобнее, чем DOM.
Например при потоковой обработке…

P.S. Классный аватар, proDiva!



Отредактировано (Апрель 26, 2008 00:06:30)

Офлайн

#7 Апрель 29, 2008 07:30:47

proDiva
От:
Зарегистрирован: 2007-02-15
Сообщения: 244
Репутация: +  0  -
Профиль   Отправить e-mail  

Как добраться до атрибутов <?xml?>?

Vasilych
Добрый день!
Разбираю xml файл. Как работает SAX разобрался, вытаскиваю все что нужно. Но вопрос, как получить значение encoding из заголовка <?xml version=“1.0” encoding=“windows-1251” ?> ? Метод startElemen из ContentHandler его пропускает.

Спасибо.
Я отвечала на вопрос, как получить значение encoding. Я лично пользуюсь модулем dom, он выполняет все задачи, которые я перед ним ставлю))



Офлайн

#8 Апрель 29, 2008 07:46:36

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Как добраться до атрибутов <?xml?>?

proDiva
Я отвечала на вопрос, как получить значение encoding. Я лично пользуюсь модулем dom, он выполняет все задачи, которые я перед ним ставлю))
Это вам еще не приходилось обрабатывать действительно большие XML файлы ;)



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#9 Апрель 29, 2008 13:47:21

ZAN
От:
Зарегистрирован: 2007-06-10
Сообщения: 403
Репутация: +  10  -
Профиль   Отправить e-mail  

Как добраться до атрибутов <?xml?>?

ZZZ
Речь шла о SAX, а он для многих вещей удобнее, чем DOM.
Например при потоковой обработке…
Если для парсинга XML скорости DOM парсера бывает вполне достаточно, то на запись DOM работает совсем никак… более чем на порядок медленее, чем на чтение…
Простенький MarkUpWriter в связке с SAX парсером порой бывает единственным решением для поточной обработки XML.



Офлайн

#10 Апрель 30, 2008 01:18:12

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Как добраться до атрибутов <?xml?>?

ZAN
Если для парсинга XML скорости DOM парсера бывает вполне достаточно, то на запись DOM работает совсем никак… более чем на порядок медленее, чем на чтение…
Тоже сталкивался… Для отправки XMPP у клиента его хватает с головой, но на сервере уж лучше ручками писать, иначе на тысячном клиенте придётся новое железо брать…
Да и при правильном подходе, когда нет особого разнобоя, структура пакетов известна зарание… SAX и для парсинга удобнее оказывается.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version