SAX將dd.xml解析成html。當然啦,如果得到了xml對應的xsl文件可以直接用libxml2將其轉換成html。
代碼如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#---------------------------------------
# 程序:XML解析器
# 版本:01.0
# 作者:mupeng
# 日期:2013-12-18
# 語言:Python 2.7
# 功能:將xml解析成對應的html
# 注解:該程序用xml.sax模塊的parse函數解析XML,并生成事件
# 繼承ContentHandler并重寫其事件處理函數
# Dispatcher主要用于相應標簽的起始、結束事件的派發
#---------------------------------------
from xml.sax.handler import ContentHandler
from xml.sax import parse
class Dispatcher:
def dispatch(self, prefix, name, attrs=None):
mname = prefix + name.capitalize()
dname = 'default' + prefix.capitalize()
method = getattr(self, mname, None)
if callable(method): args = ()
else:
method = getattr(self, dname, None)
#args = name
#if prefix == 'start': args += attrs
if callable(method): method()
def startElement(self, name, attrs):
self.dispatch('start', name, attrs)
def endElement(self, name):
self.dispatch('end', name)
class Website(Dispatcher, ContentHandler):
def __init__(self):
self.fout = open('ddt_SAX.html', 'w')
self.imagein = False
self.desflag = False
self.item = False
self.title = ''
self.link = ''
self.guid = ''
self.url = ''
self.pubdate = ''
self.description = ''
self.temp = ''
self.prx = ''
def startChannel(self):
self.fout.write('''<html>/n<head>/n<title> RSS-''')
def endChannel(self):
self.fout.write('''
新聞熱點
疑難解答