Уведомления

Jabber-конференция сообщества: pythonua@conference.jabber.ru

#1 Май 16, 2007 08:21:00

Sawer
От:
Зарегистрирован: 2007-05-16
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

простой парсинг XML

Помогите вытянуть в файл (текстовый) даные из такой XML:
<?xml version=“1.0” encoding=“UTF-8” ?>
- <device netaddr=“756033”>
- <measuringpoint>
<measuringchannel name=“Данные 1” code=“100” tag=“Значение 1” enable=“true” />
<measuringchannel name=“Данные 2” code=“300” tag=“Значение 2” enable=“true” />
<measuringchannel name=“Данные 3” code=“400” tag=“Значение 3” enable=“true” />
</measuringpoint>
</device>
в виде текстового файла
N = 756033
Данные 1 = Значение 1
Данные 2 = Значение 2
и т.д…

И что добавить, для обхода нескольких таких же URL по кругу



Отредактировано (Май 16, 2007 08:22:49)

Офлайн

#2 Май 16, 2007 08:51:44

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

простой парсинг XML

Шось таке:

import xml.sax
import xml.sax.handler
class MyHandler(xml.sax.handler.ContentHandler):
  def __init__(self):
    self.inTitle = 0
    self.mapping = {}
    self.measuringchannels = []
  def startElement(self, name, attributes):
    if name == "device":
      self.netaddr = attributes["netaddr"]
    elif name == "measuringchannel":
      self.name = attributes["name"]
      self.code = attributes["code"]
      self.tag = attributes["tag"]
      self.enable = attributes["enable"]
  def endElement(self, name):
      if name == "device":
          self.mapping[self.netaddr] = self.measuringchannels
      elif name == "measuringchannel":
          self.measuringchannels.append({'name':self.name, 'tag': self.tag, 'code': self.code, 'enable': self.enable})
parser = xml.sax.make_parser()
handler = MyHandler()
parser.setContentHandler(handler)
parser.parse("my_xml.xml")
print handler.mapping



Офлайн

#3 Май 16, 2007 08:53:41

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

простой парсинг XML

Sawer
И что добавить, для обхода нескольких таких же URL по кругу
То як?



Офлайн

#4 Май 16, 2007 21:04:54

Sawer
От:
Зарегистрирован: 2007-05-16
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

простой парсинг XML

спасибо! буду пробовать!



Офлайн

#5 Май 16, 2007 21:08:45

Sawer
От:
Зарегистрирован: 2007-05-16
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

простой парсинг XML

вышло в таком виде! как обработать?

{u'756033': [{'code': u'31110100', 'enable': u'true', 'tag': u'123214435', 'name
': u'\u0421\u0435\u0440\u0438\u0439\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u
0440 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u0441\u0447\u0435\u0442\u0447\u0
438\u043a\u0430'}, {'code': u'31110300', 'enable': u'true', 'tag': u'43253246',
'name': u'\u0421\u0435\u0442\u0435\u0432\u043e\u0439 \u0430\u0434\u0440\u0435\u0
441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u0441\u0447\u0435\u0442\u0447\u04
38\u043a\u0430'}, {'code': u'31110400', 'enable': u'true', 'tag': u'85474563', '
name': u'\u0412\u0435\u0440\u0441\u0438\u044f \u041f\u041e \u044d\u043b\u0435\u0
43a\u0442\u0440\u043e\u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0430'}]}



Офлайн

#6 Май 16, 2007 21:39:31

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

простой парсинг XML

Шо там обробляти? Ти не можеш витягнути дані з словника? Sawer, може попробуй вивчити пітон?



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version