1

我正在编写一个 Python 脚本来从 Web 服务器读取 xml 数据。我还想将数据存储在 sqlite 数据库中,但我仍然不知道如何在存储数据之前解析 xml 数据。

这是当前代码:

import xbmc
import xbmcgui
import xbmcaddon
import urllib2

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):
   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', ''))

   if os.path.exists(profilePath):
      profilePath = profilePath + 'source.db'
      con = lite.connect(profilePath)
      cur = con.cursor()
      cur.execute('CREATE TABLE IF NOT EXISTS data (channels, programme_title, programme_time, description, logo_url)')
   cur.close()

return data
cSetVisible(self,4201,True)

这是settings.xml:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<settings>
    <category label="30101">
        <setting id="source" label="30101" type="labelenum" default="YouSee.tv"
                 values="YouSee.tv|XMLTV|ONTV.dk" />

        <setting id="youseetv.category" label="30102" type="labelenum" default="Danske"
                 values="Danske|Filmkanaler|Grundpakken|Mellempakken|Fuldpakken|Nordiske|Engelske|Tyske|L​atinske|Slaviske|Tyrkiske|Kurdiske|Arabiske|Asiatiske"
                 visible="eq(-1,0)" />
        <setting id="program.background.enabled" label="30107" type="bool" default="true" visible="eq(-2,0)"/>
        <setting id="english.enabled" value="true"/>
        <setting id="french.enabled" value="false"/>
        <setting id="xmltv.file" label="30103" type="file" visible="eq(-3,1)" />
        <setting id="xmltv.logo.folder" label="30116" type="folder" visible="eq(-4,1)"/>
        <setting id="ontv.url" label="30117" type="text" visible="eq(-5,2)" default="http://ontv.dk/xmltv/c81e728d9d4c2f636f067f89cc14862c"/>
    </category>
</settings>

我正在从这个网站读取 xml 数据:http: //ontv.dk/xmltv/c81e728d9d4c2f636f067f89cc14862c

我知道如何读取 xml 数据response.read(),但我仍然不知道如何解析 xml 数据以存储在数据库中。

如何解析 xml 数据并将其存储在数据库中?

4

1 回答 1

1

正如其他提到的,我也推荐lxml

如果您想查看 xml 结构并以非常 Pythonic 的方式制作,请查看
lxml objectify

untangle

使用这个库,您应该从 XML 中获取数据。也许请记住,对于较大的 XML 文件,这不是最好和最快的方法。

于 2014-02-20T02:42:19.527 回答