我正在编写一个 Python 脚本来从服务器读取 xml 数据并将 xml 数据存储在数据库中。当我创建数据库时,我可以看到它将在数据库中写入 xml 列表而不获取每个数据,并且它没有创建如下所示的数据库表:http: //imageshack.com/a/img401 /4210/ofa5.jpg
我从服务器链接获得的 xml:http: //ontv.dk/xmltv/c81e728d9d4c2f636f067f89cc14862c
这是当前代码:
import xbmc
import xbmcgui
import xbmcaddon
import os
import urllib
import urllib2
import StringIO
import sqlite3
import datetime
import time
from xml.etree import ElementTree
ADDON = xbmcaddon.Addon(id = 'script.myaddon')
class MyScript(xbmcgui.WindowXML):
def __new__(cls):
return super(MyScript, cls).__new__(cls, 'script-menu.xml', ADDON.getAddonInfo('path'))
def onInit(self):
#DOWNLOAD THE XML SOURCE HERE
url = ADDON.getSetting('ontv.url')
req = urllib2.Request(url)
response = urllib2.urlopen(req)
data = response.read()
response.close()
profilePath = xbmc.translatePath(os.path.join('special://userdata/addon_data/script.tvguide', ''))
io = StringIO.StringIO(req)
context = ElementTree.iterparse(io)
if os.path.exists(profilePath):
profilePath = profilePath + 'source.db'
con = sqlite3.connect(profilePath)
cur = con.cursor()
cur.execute('CREATE TABLE programs(channel TEXT, title TEXT, start_date TIMESTAMP, end_date TIMESTAMP, description TEXT, image_large TEXT, image_small TEXT, source TEXT, updates_id INTEGER, FOREIGN KEY(channel, source) REFERENCES channels(id, source) ON DELETE CASCADE, FOREIGN KEY(updates_id) REFERENCES updates(id) ON DELETE CASCADE)')
cur.close()
fc = open(profilePath, 'w')
fc.write(data)
fc.close
在创建数据库表后,我想获取每个 xml 数据以写入数据库。我想知道在我创建数据库表后如何编写 xbmc 的源代码以获取每个 xml 数据以存储在数据库中?