Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

48 lines
1.4KB

  1. # -*- coding: utf-8 -*-#
  2. # filename: receive.py
  3. import xml.etree.ElementTree as ET
  4. def parse_xml(web_data):
  5. if len(web_data) == 0:
  6. return None
  7. xmlData = ET.fromstring(web_data)
  8. msg_type = xmlData.find('MsgType').text
  9. if msg_type == 'text':
  10. return TextMsg(xmlData)
  11. elif msg_type == 'image':
  12. return ImageMsg(xmlData)
  13. elif msg_type == 'event':
  14. return Event(xmlData)
  15. class Msg(object):
  16. def __init__(self, xmlData):
  17. self.ToUserName = xmlData.find('ToUserName').text
  18. self.FromUserName = xmlData.find('FromUserName').text
  19. self.CreateTime = xmlData.find('CreateTime').text
  20. self.MsgType = xmlData.find('MsgType').text
  21. self.MsgId = xmlData.find('MsgId').text
  22. class TextMsg(Msg):
  23. def __init__(self, xmlData):
  24. Msg.__init__(self, xmlData)
  25. self.Content = xmlData.find('Content').text.encode("utf-8")
  26. class ImageMsg(Msg):
  27. def __init__(self, xmlData):
  28. Msg.__init__(self, xmlData)
  29. self.PicUrl = xmlData.find('PicUrl').text
  30. self.MediaId = xmlData.find('MediaId').text
  31. class Event(object):
  32. def __init__(self, xmlData):
  33. self.ToUserName = xmlData.find('ToUserName').text
  34. self.FromUserName = xmlData.find('FromUserName').text
  35. self.CreateTime = xmlData.find('CreateTime').text
  36. self.MsgType = xmlData.find('MsgType').text
  37. self.Event = xmlData.find('Event').text